Java:有没有人有方法在数组中找到字符串的最佳匹配?

时间:2012-05-31 02:27:40

标签: java pattern-matching matching string-matching

基本上我只是想找到一种方法来找到String

最接近的匹配(不一定完全匹配)

例如,在"delicous"

中查找{"pie", "delicious", "test"}

这很明显,但数组中的值可能并不总是那么明显。

有人可以帮助我找到实现这个目标的方法。

3 个答案:

答案 0 :(得分:17)

取决于您如何定义“最接近”,但一种常见方式是使用Levenshtein Distance分数。 Apache Commons有这样的a method in StringUtils

从那里你的搜索方法基本上变成:在集合中找到给定输入具有最小Levenshtein距离的字符串。

答案 1 :(得分:2)

Java没有内置任何东西。您可以尝试使用SecondStringFREJ等第三方库。

答案 2 :(得分:2)

可以与Levenshtein Distance一起使用的另一种方法是首先采用单词的语音表示。一种算法是Metaphone

user guide for Apache Commons Codec详细介绍了这个和其他一些编码器。