gpt4 book ai didi

java - 使用elasticsearch搜索最相似的字符串

转载 作者:行者123 更新时间:2023-12-02 04:21:14 24 4
gpt4 key购买 nike

所以,我有包含 500 万个字符串的 Elasticsearch 索引,例如:“hello”、“how are you”、“hi”。只是我的机器人的短语。

那么,如何创建 Java Elasticsearch 查询来查找最相似的字符串。

例如:“你好吗,丹尼?” ->“你好吗”。

我尝试过模糊搜索,但它对我来说并不正确。我见过的最好的实现是:postgres trigrams with Levenshtein distance,但在 500 万个字符串中它运行缓慢。

一般来说,我只需要编辑距离。

最佳答案

仅使用简单的 Levenshtein 距离将会是一个问题,因为它主要查看字符而不是整个单词及其出现的顺序。

例如,考虑短语 THE EYESTHEY SEE ,编辑距离将给出 100% 匹配,因为它们具有相同的字符,但它们意味着不同的东西。

先进行 trigrams,然后进行 Levenshtein 会有所帮助,但同样容易出错,其中 actcat 会给出误报匹配

我发现匹配单词Soundex或类似的算法可以给出更好的结果。

这是一个我发现在内部使用 soundex 很有用的库。

https://github.com/intuit/fuzzy-matcher

我还没有尝试过 500 万条记录,但看起来它是一个轻量级 Java 库,如果配置为在大型服务器上运行,应该会给出结果。

关于java - 使用elasticsearch搜索最相似的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56636441/

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