如何在 Elasticsearch 中将两个查询的分数相乘?

2023-12-13

在 Solr 中我可以使用query函数查询返回查询的数字分数,我可以在bf参数类似bf=product(query('cat'),query('dog'))将两个相关性分数相乘。

Elasticsearch 的搜索 API 通常使用起来更灵活,但我不知道如何完成同样的任务。我可以用_score在 function_query 的 script_function 中,但我只能使用_score主要查询的。如何合并另一个查询的分数?如何将分数相乘?


您可以使用以下脚本编写 TF*IDF 评分函数function_score询问。像这样(忽略 Lucene 的查询和长度规范化):

"script": "tf = _index[field][term].tf(); idf = (1 + log ( _index.numDocs() / (_index[field][term].df() + 1))); return sqrt(tf) * pow(idf,2)"

您可以将“猫”和“狗”的这些函数结果相乘,并将它们添加到原始查询分数中。

这是完整的查询gist.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Elasticsearch 中将两个查询的分数相乘? 的相关文章

随机推荐