gpt4 book ai didi

python - Elastic Search Function_Score Query with Query_String

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:39 25 4
gpt4 key购买 nike

我正在使用代码使用 Elasticsearch 进行搜索:

es.search(index="article-index", fields="url", body={
"query": {
"query_string": {
"query": "keywordstr",
"fields": [
"text",
"title",
"tags",
"domain"
]
}
}
})

现在我想在搜索评分中插入另一个参数 - “recencyboost”。

有人告诉我 function_score 应该可以解决问题

res = es.search(index="article-index", fields="url", body={
"query": {
"function_score": {
"functions": {
"DECAY_FUNCTION": {
"recencyboost": {
"origin": "0",
"scale": "20"
}
}
},
"query": {
{
"query_string": {
"query": keywordstr
}
}
},
"score_mode": "multiply"
}
}
})

它给我的错误是字典 {"query_string": {"query": keywordstr}} 不可散列。

1) 如何修复错误?

2) 如何更改衰减函数,以便为更高的新近度提升提供更高的权重?

最佳答案

你似乎有一个额外的 query在您的搜索中(总共给出三个),这给了您一个不需要的顶级。您需要删除顶级 query并将其替换为 function_score 作为顶级 key 。

res = es.search(index="article-index", fields="url", body={"function_score": {
"query": {
{ "query_string": {"query": keywordstr} }
},
"functions": {
"DECAY_FUNCTION": {
"recencyboost": {
"origin": "0",
"scale": "20"
}
}
},
"score_mode": "multiply"
})

备注:score_mode默认为 "multiply" , 和未使用的 boost_mode 一样,所以应该没有必要提供。

关于python - Elastic Search Function_Score Query with Query_String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22435422/

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