我有两个带有字段的文档 country
可以包含重复值,例如
文档 1:
country: [US, US, GB, US]
文档2:
country: [US, GB]
我在查找
country:US
时需要一个查询将为 Doc1
分配更高的分数比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 : 在您的映射中为假。
{
"properties": {
"title": {
"type": "text",
"norms": false
}
}
}
关于elasticsearch - Elasticsearch 数组中的重复值和查询评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58085927/