【发布时间】:2012-06-05 07:18:00
【问题描述】:
基本上,我只是想找到一种方法来找到与String 最接近的匹配项(不一定完全匹配)
例如,在{"pie", "delicious", "test"}中找到"delicous"
这很明显,但数组中的值可能并不总是那么不同。
有人可以帮助我实现这一目标吗?
【问题讨论】:
标签: java pattern-matching matching string-matching
基本上,我只是想找到一种方法来找到与String 最接近的匹配项(不一定完全匹配)
例如,在{"pie", "delicious", "test"}中找到"delicous"
这很明显,但数组中的值可能并不总是那么不同。
有人可以帮助我实现这一目标吗?
【问题讨论】:
标签: java pattern-matching matching string-matching
取决于您如何定义“最接近”,但一种常见的方法是使用Levenshtein Distance 分数。 Apache Commons 有这样的a method in StringUtils。
从那里你的搜索方法基本上变成:在集合中找到对于给定输入具有最小 Levenshtein 距离的字符串。
【讨论】:
Java 没有为此内置任何东西。你可以试试像SecondString 或FREJ 这样的第三方库。
【讨论】:
另一种可以与 Levenshtein Distance 结合使用的方法是首先获取单词的语音表示。一种算法是Metaphone。
user guide for Apache Commons Codec 包含此编码器和其他一些编码器的详细信息。
【讨论】: