gpt4 book ai didi

elasticsearch - Elasticsearch可以对值的对数进行衰减搜索吗?

转载 作者:行者123 更新时间:2023-12-02 23:00:43 29 4
gpt4 key购买 nike

我将数字views存储在Elasticsearch中。我想找到一个以对数刻度“最接近”的文档,以便从10万个 View 中得出10k和1MM的距离相同(并得到相同的分数)。那可能吗?

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#exp-decay描述field value factordecay functions,但是可以“堆叠”吗?还有其他方法吗?

最佳答案

我不确定是否可以通过衰减直接实现,但是可以使用script_score函数轻松实现。下面的示例使用动态脚本,但是请注意,使用file-based scripts是推荐的更为安全的方法。

在下面的查询中,offset参数设置为100,000,并且其“ View ”字段中具有该值的文档得分最高。当 View 的值偏离offset时,得分对数衰减。根据您的示例,具有1,000,000和/或10,000的文档具有相同的分数(此公式中为0.30279312)。

您可以通过更改脚本的开头以乘以_score而不是除法来反转这些结果的顺序。

$ curl -XPOST localhost:9200/somestuff/_search -d '{
"size": 100,
"query": {
"bool": {
"must": [
{
"function_score": {
"functions": [
{
"script_score": {
"params": {
"offset": 100000
},
"script": "_score / (1 + ((log(offset) - log(doc['views'].value)).abs()))"
}
}
]
}
}
]
}
}
}'

注意:您可能要考虑“ View ”为空的可能性,具体取决于您的数据。

关于elasticsearch - Elasticsearch可以对值的对数进行衰减搜索吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770992/

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