gpt4 book ai didi

elasticsearch - 如何根据 Elasticsearch 中的重新评分函数选择顶级术语桶

转载 作者:行者123 更新时间:2023-11-29 02:55:26 25 4
gpt4 key购买 nike

考虑以下针对 Elasticsearch 5.6 的查询:

{
"size": 0,
"query": {
"match_all": {}
},
"rescore": [
{
"window_size": 10000,
"query": {
"rescore_query": {
"function_score": {
"boost_mode": "replace",
"script_score": {
"script": {
"source": "doc['topic_score'].value"
}
}
}
},
"query_weight": 0,
"rescore_query_weight": 1
}
}
],
"aggs": {
"distinct": {
"terms": {
"field": "identical_id",
"order": {
"top_score": "desc"
}
},
"aggs": {
"best_unique_result": {
"top_hits": {
"size": 1
}
},
"top_score": {
"max": {
"script": {
"inline": "_score"
}
}
}
}
}
}
}

这是一个简化版本,其中真正的查询有一个更复杂的主查询,并且 rescore 函数更加密集。

让我先解释一下它的用途,以防我要花 1000 小时开发一支可以在太空中书写的钢笔,而铅笔实际上可以解决我的问题。我正在执行一个快速的初始查询,然后使用更密集的函数重新对顶部结果进行评分。从这些结果中,我想显示最重要的不同值,即任何两个结果都不应具有相同的 identical_id。如果有更好的方法来做到这一点,我也会认为这是一个答案。

我预计这样的查询会按 rescore 查询对结果进行排序,将具有相同 identical_id 的所有结果分组,并显示每个此类不同组的热门结果。我还假设,由于我按最大父 _score 对这些术语聚合桶进行排序,因此它们将被排序以反射(reflect)它们包含的最佳结果,这是根据原始 rescore 查询确定的。

实际情况是术语桶是按最大查询分数而不是重新查询分数排序的。奇怪的是,桶中的热门歌曲似乎确实使用了重新评分。

是否有更好的方法来实现我想要的最终结果,或者我可以通过某种方式修复此查询以使其按我期望的方式工作?

最佳答案

来自 documentation :

The query rescorer executes a second query only on the Top-K results returned by the query and post_filter phases. The number of docs which will be examined on each shard can be controlled by the window_size parameter, which defaults to 10.

由于 rescore 查询post_filter 阶段之后启动,我假设术语聚合桶已经固定。

我不知道如何结合重新评分和聚合。对不起:(

关于elasticsearch - 如何根据 Elasticsearch 中的重新评分函数选择顶级术语桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52212625/

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