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