gpt4 book ai didi

search - 如何根据 ElasticSearch 中的项目数对搜索结果进行排序?

转载 作者:行者123 更新时间:2023-12-02 22:21:01 26 4
gpt4 key购买 nike

假设我在 ElasticSearch 中存储这样的文档:

{
'name':'user name',
'age':43,
'location':'CA, USA',
'bio':'into java, scala, python ..etc.',
'tags':['java','scala','python','django','lift']
}

假设我使用 location=CA 进行搜索,如何根据“标签”中的项目数对结果进行排序?

我想列出第一页中标签数量最多的人。

最佳答案

您可以对包含标签数量的附加字段进行索引,然后您可以轻松地对结果进行排序。否则,如果您愿意在查询时支付一点性能成本,那么有一个不错的解决方案,不需要重新索引您的数据:您可以 sort基于这样的脚本:

{
"query" : {
"match_all" : {}
},
"sort" : {
"_script" : {
"script" : "doc['tags'].values.length",
"type" : "number",
"order" : "asc"
}
}
}

正如您可以从基于脚本的排序部分中读到的:

Note, it is recommended, for single custom based script based sorting, to use custom_score query instead as sorting based on score is faster.



这意味着最好使用 custom score query影响您的分数,然后按分数排序,如下所示:
{
"query" : {
"custom_score" : {
"query" : {
"match_all" : {}
},
"script" : "_score * doc['tags'].values.length"
}
}
}

关于search - 如何根据 ElasticSearch 中的项目数对搜索结果进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12733351/

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