【发布时间】:2023-03-18 18:35:01
【问题描述】:
我正在尝试将相关性得分和另一个字段的排序结合起来,但不知道该怎么做。
我的文档有许多文本字段,我想针对某个词进行搜索。该术语可能出现在文档的多个字段中。
我正在使用以下内容进行基本过滤:
"query_string": {
"query": "Burger",
"default_field": "*"
}
}
我还有一个字段 popularityScore 可以衡量文档的受欢迎程度。我尝试按此排序:
"query": {
"query_string": {
"query": "Burger",
"default_field": "*"
}
},
"sort": [
{
"popularityScore": {
"order": "desc"
}
}
]
}
通过这样做,查询的相关性变得无关紧要,如果没有它,相关性的微小偏差可能会导致非常受欢迎的文档显示较低。有没有一种方法可以将流行度得分和相关性结合起来,或者设置一个上限(例如,只返回相关性 > x 然后对它们进行排序)?
【问题讨论】:
-
您能否详细说明您希望如何结合流行度得分和相关性。分数是相对于返回的文档的,这些不是绝对值,因此将它们与静态值进行比较没有意义
-
popularityScore 本身也是一个相对值(预先计算),所以我认为某种类型的加权乘数会起作用。也就是说,我对其他方法持开放态度,我试图避免的是非常高相关性分数和非常低人气分数(或相反)的长尾。
标签: elasticsearch