Elasticsearch数组和查询评分中的重复值

问题描述 投票:2回答:1

我有两个文档,它们的字段country可以包含重复的值,例如

文档1:

country: [US, US, GB, US]

文档2:

country: [US, GB]

我需要一个查询,因为country:USDoc1Doc2字段中多次出现,因此寻找US时会给country分配比Doc1高的分数。查找country:GB时对两个文档评分,因为在两个文档中出现的次数相同。用Elasticsearch可以实现吗?

elasticsearch
1个回答
0
投票

如果您正在美国进行简单的比赛搜索

GET countryindex/_search
{
  "query": {
   "match": {
     "country": "US"
   }
  }
}

[它将为更多的元素频率提供更高的分数,因此,[US,US,GB,US]比“ [US,GB]”将获得更高的分数如果您要搜索“ GB”->“ [[US,GB]”将比[US,US,GB,US]获得更高的分数,因为较短的字段长度将获得更高的分数。

如果要在匹配数相同时给出相同的分数,则需要在映射中输入norms:false。

{
  "properties": {
    "title": {
      "type": "text",
      "norms": false
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.