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



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

文档1:

country: [US, US, GB, US]

文档2:

country: [US, GB]

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

如果您正在美国进行简单的匹配搜索

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

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

如果你想在匹配数相同时给出相同的分数,你需要在你的映射中给出规范:false。

{
"properties": {
"title": {
"type": "text",
"norms": false
}
}
}

最新更新