【问题标题】:elastic search array score弹性搜索数组分数
【发布时间】:2015-05-20 10:07:39
【问题描述】:

我有一个文档有一个类似的数组

doc1

{
"item_type":"bag",
"color":["red","blue","green","orange"]
}

doc2

{
"item_type":"shirt",
"color":["red"]
}

当我像这样进行 multi_match 搜索时

{ "query": { "multi_match": { "query": "red bag", "type": "cross_fields", "fields": ["item_type","color"] } } }

doc2 的分数要高得多,我知道颜色字段的项目越少,分数越高,如果我在 doc1 中有更多的颜色,它会变得更糟。

那么有没有一种方法可以让 Elasticsearch 为数组字段评分,无论有多少项?

【问题讨论】:

  • 无论如何你都想使用multi_match吗?
  • 如果您将"use_dis_max": false 添加到您的multi_match,您会获得更好的结果吗?
  • use_dis_max:false 没有帮助

标签: arrays elasticsearch


【解决方案1】:

如果您不想在评分期间考虑字段长度 (fieldNorm),您可以为映射中的字段禁用 norms

例如,上面示例的映射将是

   {
   "properties": {
      "item_type": {
         "type": "string"
      },
      "color": {
         "type": "string",
         "norms": {
            "enabled": false
         }
      }
   }
}

来自 elasticsearch 权威指南的 article 提供了对字段长度规范的深入了解。

【讨论】:

  • 感谢 Keety,你拯救了我的一天!
猜你喜欢
  • 2018-11-28
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
相关资源
最近更新 更多