gpt4 book ai didi

database - 按嵌套字段排序

转载 作者:行者123 更新时间:2023-12-03 00:13:17 24 4
gpt4 key购买 nike

我使用这种结构的文档有 flex

{
"name": "Foo Bar",
"myTags": [
{
"id": 3,
"name": "My tag 1"
},
{
"id": 5,
"name": "My Tag 5"
},
{
"id": 7,
"name": "My Tag 7"
}
]
}

现在,给定3个标签,我想按匹配标签的数量对所有文档进行排序。因此,首先匹配所有3个标签的文档比匹配2个文档的文档匹配,然后再匹配一个,最后都不匹配。

我怎样才能做到这一点 ?

最佳答案

您可以使用function_score做到这一点:

{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"filter": {
"nested": {
"path": "myTags",
"query": {
"term": {
"myTags.name": "My Tag 1"
}
}
}
},
"weight": 1
},
{
"filter": {
"nested": {
"path": "myTags",
"query": {
"term": {
"myTags.name": "My Tag 5"
}
}
}
},
"weight": 1
},
{
"filter": {
"nested": {
"path": "myTags",
"query": {
"term": {
"myTags.name": "My Tag 7"
}
}
}
},
"weight": 1
}
],
"boost_mode": "sum",
"score_mode": "sum"
}
}
}

关于database - 按嵌套字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901140/

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