这是我的ES5索引设置:
dev: {
settings: {
index: {
number_of_shards: "5",
provided_name: "dev",
creation_date: "1491735064046",
analysis: {
filter: {
trigrams_filter: {
type: "ngram",
min_gram: "3",
max_gram: "3"
}
},
analyzer: {
trigrams: {
filter: [
"lowercase",
"trigrams_filter"
],
type: "custom",
tokenizer: "standard"
}
}
},
number_of_replicas: "1",
uuid: "2dcgz81ET0GRFa-EEwsUhA",
version: {
created: "5020299"
}
}
}
},
此查询将按预期提供1个结果:
{'from': 0,
'query': {'bool': {'filter': [{'term': {'public': True}}],
'must': [{'multi_match': {'fields': ['author_name',
'title^5',
'title_ngram',
'title.ngram',
'title.stemmed',
'text^3',
'text.stemmed',
'keywords',
'keywords.stemmed',
'categories',
'categories.stemmed'],
'fuzziness': 'AUTO',
'query': u'austrailia'}}]}},
'size': 20}
因为有一篇标题为australia
的文章。
但aust
的此查询不会产生任何结果:
{'from': 0,
'query': {'bool': {'filter': [{'term': {'public': True}}],
'must': [{'multi_match': {'fields': ['author_name',
'title^5',
'title_ngram',
'title.ngram',
'title.stemmed',
'text^3',
'text.stemmed',
'keywords',
'keywords.stemmed',
'categories',
'categories.stemmed'],
'fuzziness': 'AUTO',
'query': u'austrailia'}}]}},
'size': 20}
我已经阅读了所有ES5文档,但仍然无法使其正常工作。
答案 0 :(得分:1)
aust
您不会获得某些内容,因为ngrams
只有3个字母:"min_gram": "3", "max_gram": "3"
和aust
由4个字母组成。如果您想要aust
或更长的匹配项,请使用max_gram: 10
或更大的内容。