我想在排名时标准化点积。
我会用简单的术语来解释,然后添加一点数学。假设我们有 2 个搜索结果。为请求生成一个搜索结果,为请求生成Пупкины сыновья第二个搜索结果Сыновья Пупкины。然后我们有输出:
document_0, score_0
document_1, score_1
document_2, score_2
...
document_p, score_p
第二个请求的输出:
document_0, score_0
document_1, score_1
document_2, score_2
...
document_q, score_q
让第一个输出的 score_0 为 500。第二个输出的得分为 0.5。任务是能够比较不同问题的分数并评估彼此之间的相关性。
据我所知,默认的排名函数是点积。例如,我们有一个查询(v)向量和一个文档向量(d_i)。对于排名,我们(q, d_i)为 all做,点积i在哪里。(., .)请解释一下是否可以计算(q / | q |, d_i / | d_i |)?在我看来,如果有解决方案,我的问题有三种可能的解决方案。
function_score. 我可以得到重量(tf-idf)function_score吗?- 使用 elasticsearch API 获取所有权重。该标志
explain不适合,因为使用它的请求将被处理很长时间。反面的另一面explain是交集的返回(tokensq和d_i)。请注意,虽然我现在说的是点积,但将来我想计算欧几里得距离。 - 默认情况下标准化搜索权重
显然,这是不可能做到的。提供给我的唯一选择是修补松紧带。但是这个选项看起来不够用,因为它必须在任何版本更新后重做。好痛。脚本不允许到达秤。插件类似。
这很可能是因为弹性是分布的,并不是所有的权重都存储在一个分片上。