My Elasticsearch索引中包含大量英文文档。当我搜索"it is rare"
时,我会使用这个确切的短语获得20次点击,当我搜索"it is rarely"
时,我会得到一个不同的10.我怎样才能同时获得所有30次点击?
我尝试使用英文分析器创建一个多字段(如下所示),但如果我在该字段中搜索,那么我只会从短语的部分内容中获得结果(例如,文档匹配it
或{{ 1}}或is
)而不是整个短语。
rare
答案 0 :(得分:8)
想出来了!
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'
]
}
}
}
}
}
以下是查询的内容:
{
query: {
query_string: {
query: <query>,
fields: ['text.english'],
analyzer: 'english_nostop'
}
},
highlight: {
fields: {
'text.english': {}
'text': {}
}
},
}