gpt4 book ai didi

在elasticsearch中仅按词频排序

转载 作者:行者123 更新时间:2023-11-29 02:56:59 25 4
gpt4 key购买 nike

我的用户有城市、国家、追随者数量和其他一些字段。当我在城市和国家/地区字段中按“美国纽约”搜索并按关注者数量排序时,我需要首先显示按关注者数量降序排序的“美国纽约”的人,然后我需要显示来自美国其他城市的人也按 followersAmount 降序排序。我想我可以通过仅按词频进行评分并首先按分数排序,其次按关注者数量排序来做到这一点,但我找不到如何配置它。

最佳答案

像这样的事情呢:

{
"query" : {
"bool" : {
"should" : [
{
"constant_score" : {
"query" : {
"match" : {
"city" : "New York"
}
}
}
},
{
"constant_score" : {
"query" : {
"match" : {
"country" : "USA"
}
}
}
}
]
}
},
"sort" : [
"_score",
{ "followersAmount" : { "order" : "desc"} }
]
}

您可以期望来自“美国纽约”的人获得相同的分数。来自美国而非纽约的人将获得相同的分数,但分数较低。对于得分相同的人,他们将按照 followersAmount 排序。当然,这只是让您入门的初始查询 - 可能需要更多调整和内容。

编辑:用 constant_score 更新

我希望基本的 TF-IDF 算法和字段长度的结合能有所帮助。一般来说,与国家/地区的条款相比,我希望城市的条款具有更大的相关 IDF。因此,在城市比赛中获得更高的分数似乎是可取的。就 TF 和字段长度规范而言,给只有一个匹配城市的人打分比给有两个城市的人打分(如果您碰巧有这些字段的数组以允许多个城市)似乎也很有利。但是,我不确定您的数据是什么样的。我已经更新了查询,以便使用 constant_score 查询时 Elasticsearch 的基本算法不会产生这样的影响。

关于在elasticsearch中仅按词频排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com