我已经将es配置为执行自动填充,并且我也可以得到比建议更好的精确匹配。
例如,如果有人键入伦敦,则api首先返回伦敦,然后返回Londonderry。但是,如果有人键入Londo,则es首先返回Londonderry,然后返回伦敦。当然,伦敦比伦敦德里更近。
纽约和纽约也会发生同样的事情。当我搜索“约克”时,“约克”优先于约克。
我正在使用此处提供的解决方案。
Favor exact matches over nGram in elasticsearch
最佳答案
这段代码对我有帮助:
"query": {
"match": {
"message": {
"query": inputQuery,
"fuzziness": 3,
"prefix_length": 2
}
}
}
首先,您应该使用
fuzziness
-ES documentation希望对您也有帮助。
关于elasticsearch - 当进行预先输入搜索时,Elasticsearch更喜欢完全匹配而不是部分匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29536438/