Java 模糊匹配无序字符串

Java 模糊匹配无序字符串,java,string,fuzzy,fuzzy-comparison,Java,String,Fuzzy,Fuzzy Comparison,我有一堆字符串,它们在措辞上完全是随机的,我需要找到与关键字最匹配的字符串。我试过使用三元组和Levenshtein的算法,但仍然得到不规则的结果。我尝试过按字符串的第一个字符对其排序,然后运行Levenshtein的算法,这样我就能够得到更准确的结果,但这没有帮助 我的关键字可能每个1-3个单词,但我试图匹配的目标字符串有时大于10-20个单词。有没有其他算法可以有效地将关键字匹配到正确的字符串 三元组方法我尝试使用以下方法: ratio = (3*|A ∩ B|)/(|A| + |B|)

我有一堆字符串,它们在措辞上完全是随机的,我需要找到与关键字最匹配的字符串。我试过使用三元组和Levenshtein的算法,但仍然得到不规则的结果。我尝试过按字符串的第一个字符对其排序,然后运行Levenshtein的算法,这样我就能够得到更准确的结果,但这没有帮助

我的关键字可能每个1-3个单词,但我试图匹配的目标字符串有时大于10-20个单词。有没有其他算法可以有效地将关键字匹配到正确的字符串

三元组方法我尝试使用以下方法:

ratio = (3*|A ∩ B|)/(|A| + |B|)
其中A和B是三元组数组(一个单词的3个字符,由1索引生成),例如

和∩ B是A和B中相似的三胞胎。这种方法似乎有效,但它最终给了我很多不规则的结果


那么,有没有办法改进这种模糊匹配?

我真的不明白你的问题。Levenstein算法应该提供需要编辑的字符数。之后,您需要对结果进行排序,以获得最接近的匹配。。。它不是很有效(
O(n*m)*z+O(z*logz)
其中z是三叠片数组的长度,n是第一个字符串的长度,m是第二个字符串的长度。)但是没有更好的方法了……我的问题是,有些字符串的编写方式可以从Levenstein的算法中获得更好的值,而这不是我想要的匹配。我想我会修改一下算法什么的。
stackoverflow -> sta, tac, ack, cko, kov, ove, ver, erf, rfl, flo, low