7

基本上我只是想找到一种方法来找到最接近的匹配(不一定精确)String

例如,"delicous"{"pie", "delicious", "test"}

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

有人可以帮助我实现这一目标。

4

3 回答 3

18

取决于您如何定义“最近”,但一种常见的方法是使用Levenshtein 距离分数。Apache Commons在 StringUtils 中有这样的方法

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

于 2012-05-31T02:33:08.890 回答
2

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

于 2012-05-31T02:33:51.330 回答
2

可以与 Levenshtein Distance 结合使用的另一种方法是首先采用单词的语音表示。执行此操作的一种算法是Metaphone

Apache Commons Codec的用户指南包含有关此编码器和其他一些编码器的详细信息。

于 2012-05-31T02:34:53.527 回答