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

Doc1:

country: [US, US, GB, US]

Doc2:
country: [US, GB]

我需要一个查询,因为在country:USDoc1字段中Doc2多次出现,所以在寻找US时,会给country一个比Doc1高的分数,而在寻找country:GB时,它会为两个文档分配相同的分数,因为它看起来相同两个文档中的次数。 Elasticsearch可以实现吗?

最佳答案

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

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
    }
  }
}

关于elasticsearch - Elasticsearch数组中的重复值和查询评分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58085927/

10-16 08:40