gpt4 book ai didi

java - 使用 Java API 在 ElasticSearch 中使用 JaroWinkler 对查询进行评分

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:54 25 4
gpt4 key购买 nike

我正在使用 Java API 处理 ElasticSearch。

目前,我正在做一些匹配查询。现在,我想使用字符串的 Jaro Winkler 距离计算我的查询的 _score 值。

ElasticSearch 是否允许使用用户定义的其他评分函数?

最佳答案

Elasticsearch 在引擎盖下使用 lucene 进行所有评分。 Lucene在6.0之前的版本使用TF/IDF进行评分,6.0之后的版本使用Bm25算法。

Elasticsearch 允许您编写脚本来修改您已经从 lucene 获得的命中分数,但没有其他方法可以编写为初始搜索实现的评分函数。由于结果分页,尝试修改您获得的分数也有局限性,因为与第一页上的所有结果相比,第二页上的结果可能比您的算法更好。

所以你唯一真正能做的就是为 elasticsearch/lucene 写一个插件来做到这一点。您还应该记住,elasticsearch/lucene 使用倒排索引,因此您的结果可能仍然不是您想要的。

此外,由于无法访问服务器,因此对您的问题的简短回答是否定的,这是无法完成的。您能做的最好的事情就是要求大量结果,然后使用脚本来提升它们。

编辑:在做了更多研究之后,我发现您可以使用 function score 来完成与您想做的事情非常相似的事情。 elasticsearch 查询,借助 fuzziness .虽然它仍然不会改变文档的查找方式(必须处理倒排索引和分析器等),但您肯定会弄乱结果的评分。另请参阅 this

关于java - 使用 Java API 在 ElasticSearch 中使用 JaroWinkler 对查询进行评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342708/

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