最短的Levenshtein距离?我需要它吗?

Wri*_*ick 6 java string android levenshtein-distance

我想查找一个StringString[]该查询的最佳匹配.我听说过Levenshtein Distance.但我无法确定是否需要它.

假设,我有一个String query = "Examples"

String[] arrayStr = new String[] {"The Examples String", "The Example String", "Example", "Examples String", "Example String", "Examplestring"};
Run Code Online (Sandbox Code Playgroud)

现在,我希望ExampleString[]最佳匹配中获得.

那么,我需要Levenshtein Distance来做吗?

或者,如果有人可以指出我快速实现Levenshtein Distance for Java,那就太棒了.我想检查它是否适用于我拥有的所有字符串.(基本上我有大约10k个字符串来匹配10k数组.)

Gre*_*eek 8

是的,Levenshtein Distance是这个的goto算法.您可以在http://rosettacode.org/wiki/Levenshtein_distance找到多种语言的实现,包括Java.

  • 正如@ marco-forberg指出的那样,Apache的StringUtils有一个实现 - 文档位于http://commons.apache.org/proper/commons-lang/javadocs/api-3.3/org/apache/commons/lang3/StringUtils.html# getLevenshteinDistance(java.lang.CharSequence,java.lang.CharSequence)以及'Jaro Winkler Distance'算法的实现,http://commons.apache.org/proper/commons-lang/javadocs/api-3.3/ org/apache/commons/lang3/StringUtils.html#getJaroWinklerDistance(java.lang.CharSequence,java.lang.CharSequence) (2认同)