a p*_*erd 2 highlighting stemming elasticsearch
我的Elasticsearch索引中包含大量英文文档.当我搜索时"it is rare",我会用这个确切的短语获得20次点击,当我搜索时,"it is rarely"我得到一个不同的10.我怎样才能同时获得所有30次点击?
我尝试使用英语分析器创建一个多字段(下面),但是如果我在该字段中搜索,那么我只从短语的部分(例如,文档matchin it或isor rare)而不是整个短语中获得结果.
"mappings" : {
...
"text" : {
"type" : "string",
"fields" : {
"english" : {
"type" : "string",
"store" : true,
"term_vector" : "with_positions_offsets_payloads",
"analyzer" : "english"
}
}
},
...
Run Code Online (Sandbox Code Playgroud)
弄清楚了!
text),另一个用于带有英语词干(text.english)的子字段.这是我的索引配置:
{
mappings: {
documents: {
properties: {
title: { type: 'string' },
text: {
type: 'string',
term_vector: 'with_positions_offsets_payloads',
fields: {
english: {
type: 'string',
analyzer: 'english_nostop',
term_vector: 'with_positions_offsets_payloads',
store: true
}
}
}
}
}
},
settings: {
analysis: {
filter: {
english_stemmer: {
type: 'stemmer',
language: 'english'
},
english_possessive_stemmer: {
type: 'stemmer',
language: 'possessive_english'
}
},
analyzer: {
english_nostop: {
tokenizer: 'standard',
filter: [
'english_possessive_stemmer',
'lowercase',
'english_stemmer'
]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是查询的样子:
{
query: {
query_string: {
query: <query>,
fields: ['text.english'],
analyzer: 'english_nostop'
}
},
highlight: {
fields: {
'text.english': {}
'text': {}
}
},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |