elasticsearch - Elasticsearch 得分基本长度特征

标签 elasticsearch

我有查询1:

  "multi_match": {
    "query": "abcdef",
    "type": "best_fields",
    "fields": [
      "email"
    ]
  }

结果是正确的:
  "total": 1,
  "max_score": 4.6334114,
  "hits": [
     {
        "_score": 4.6334114,
        "_source": {
           "id": 244,
           "email": "abcdef@xxxxx.com",
        }
     }
  ]
 }

但是查询2:
  "multi_match": {
    "query": "abc",
    "type": "best_fields",
    "fields": [
      "email"
    ]
  }

结果是:
  "total": 0,
  "max_score": null,
  "hits": []

如何自定义分数到查询2获得与查询1相同的结果?

谢谢

最佳答案

您应该学会了解如何为您的术语建立索引,例如,您的电子邮件(如果使用的是默认设置)正在发出以下 token :

  • abcdef
  • xxxxx
  • com

  • 这就是为什么当您使用"abcdef"作为短语进行查询时会得到匹配的原因。

    现在,您可以使用分析器,该分析器将使用Edge NGram filter(或tokenizer)。因此,您的电子邮件将发出此类 token :
  • abc
  • abcd
  • abcde
  • abcdef
  • abcefg...
  • com

  • 您将不得不使用custom analyzer为您的电子邮件编制索引,然后abc短语才能找到匹配项

    关于elasticsearch - Elasticsearch 得分基本长度特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955324/

    相关文章:

    elasticsearch - 如何使用 Kibana + Elastic Search 检索字段的唯一计数

    elasticsearch - ElasticSearch失败,出现OutOfMemoryError

    elasticsearch - 根据字符串值汇总数据

    elasticsearch - elasticsearch data_path在elasticsearch上删除一个

    elasticsearch - Elastic Search NEST客户端原始+自定义查询

    geolocation - ElasticSearch——使用距点的距离影响查询相关性

    Elasticsearch 方面术语与标签

    java - 如何使用 ElasticSearch 获得 0 到 1 之间的分数?

    elasticsearch - 如何在Elastic Search中使用聚合

    elasticsearch - 如何四舍五入到小数点后两位 - elasticsearch