gpt4 book ai didi

ruby-on-rails - 提高搜索结果中与数组匹配的文档

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

我已经建立了这个相对复杂的搜索查询,并且可以进行完美的排序。

但是我认为这里的搜索只是由于脚本而变慢,因此我想删除所有脚本并相应地编写查询。

当前代码:-

"sort": [
{
"_script": {
"type": "number",
"script": {
"lang": "painless",
"source": "double pscore = 0;for(id in params.boost_ids){if(params._source.midoffice_master_id == id){pscore = -999999999;}}return pscore;",
"params": {
"boost_ids": [
3,
4,
5
]
}
}
}
}]

以上代码说明:

例如,如果匹配查询将给出如下结果:
[{m_id: 1, name: A}, {m_id: 2, name: B}, {m_id: 3, name: C}, {m_id: 4, name: D}, ...]

所以我想使用m_id数组[3,4,5]增强文档,然后将结果转换为:
[{m_id: 3, name: C}, {m_id: 4, name: D}, {m_id: 1, name: A}, {m_id: 2, name: B}, ...]

最佳答案

您可以使用Function Score Query(用于提升)和Terms Query(用于查询值数组)来利用以下查询

请注意,我提到的逻辑在bool queryshould子句中。

POST <your_index_name>/_search
{
"query": {
"bool": {
"must": [
{
"match_all": {} //just a sample must clause to retrieve all docs
}
],
"should": [
{
"function_score": { <---- Function Score Query
"query": {
"terms": { <---- Terms Query
"m_id": [
3,4,5
]
}
},
"boost": 100 <---- Boosting value
}
}
]
}
}
}

因此,基本上,您可以完全删除排序逻辑,并在 function query子句中添加上面的 should,这将为您提供所需的结果。

请注意,如果您有非常复杂的查询,并且如果遇到任何困难,则必须找到一种正确添加逻辑的方法,请告诉我。我很乐意为您服务!

希望这可以帮助!

关于ruby-on-rails - 提高搜索结果中与数组匹配的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58437142/

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