elasticsearch - 当进行预先输入搜索时,Elasticsearch更喜欢完全匹配而不是部分匹配

标签 elasticsearch

我已经将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/

相关文章:

configuration - 创建单独的master+data和client+data的elasticsearch节点

elasticsearch - 不同类型的Elasticsearch 7.6 “illegal_argument_exception”映射器[processes.pid],current_type [text],merged_type [long]

elasticsearch - Elasticsearch 中多个字段的术语聚合

php - 使用Elasticsearch在Symfony项目中的搜索结果

elasticsearch - ElasticSearch-无法过滤字符串数组

java - 用于 ElasticSearch 的 Spring Boot Micrometer 与 APM Java 代理

elasticsearch - Elasticsearch 的 Hunspell 字典放在哪里

elasticsearch - Elasticsearch 基于日期的嵌套查询过滤器未返回正确的结果

elasticsearch - 获取 Elasticsearch 中字段值与任意数组元素匹配的所有文档

solr - 文件的部分更新