我有两个文档,它们的字段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:false。
{
"properties": {
"title": {
"type": "text",
"norms": false
}
}
}