gpt4 book ai didi

elasticsearch - 向Elasticsearch查询添加提升

转载 作者:行者123 更新时间:2023-12-02 22:24:35 27 4
gpt4 key购买 nike

我正在尝试为Elasticsearch的某些结果增加权重。

我目前仅过滤“ Activity ” bool(boolean) 值以仅获取已发布的项目:

    query: {
filtered: {
query: {
match: {
_all: params[:q]
}
},
filter: {
term: {
active: true
}
}
},
}

我现在想增加一些模型的重量。例如,市场应获得+2的 push 力。我正在尝试这样的事情:(search_type是我的结果中的一个字段,它基本上是Rails模型的名称)
POST _search
{
"query": {
"function_score": {
"query": {
"match": {
"_all": "hospitality"
}
},
"functions": [
{
"filter": {
"term": {
"active": true
}
}
},
{
"filter": {
"term": {
"search_type": "Market"
}
},
"weight": 2
}
]
}
}
}

但是,这似乎不起作用:“函数列表中的一个条目缺少函数”。因此,我将 "weight": 1添加到了 Activity 过滤器中。但是现在它说它无法解析。

我没有使用ElasticSearch的经验,并且文档非常混乱。我也尝试过使用 custom_filters_score东西,但这似乎不适用于我的ES版本(如此处所述: http://jontai.me/blog/2013/01/advanced-scoring-in-elasticsearch/)。我尝试的另一种选择是将 bool(boolean) 查询与must和should相结合,但是返回零结果。

不知道如何进行。一些见解会很棒。

最佳答案

您应该能够在函数得分旁边使用filtered query来实现这一目标

例:

{
"query": {
"filtered": {
"query": {
"function_score": {
"query": {
"match": {
"_all": "hospitality"
}
},
"functions": [
{
"filter": {
"term": {
"search_type": "Market"
}
},
"weight": 2
}
]
}
},
"filter": {
"term": {
"active": true
}
}
}
}
}

关于elasticsearch - 向Elasticsearch查询添加提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32507511/

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