【发布时间】:2013-06-24 11:17:41
【问题描述】:
我想在 String[] 中查找 String 以获得查询的最佳匹配。我听说过Levenshtein Distance。但我无法确定我是否需要它。
假设,我有一个String query = "Examples" 和
String[] arrayStr = new String[] {"The Examples String", "The Example String", "Example", "Examples String", "Example String", "Examplestring"};
现在,我想从String[] 中获得Example 作为最佳匹配。
那么,我需要 Levenshtein Distance 吗?
另外,如果有人能指出我的 Levenshtein Distance for Java 的快速实现,那就太好了。我想检查它是否适用于我拥有的所有类型的字符串。 (基本上我有大约 10k 个字符串可以从 10k 个数组中匹配。)
【问题讨论】:
-
列文斯坦距离只是您必须添加/删除/更改以将一个刺痛转换为另一个刺痛的字符数量。它并不能真正说明比赛的质量。例如。 “示例”->“非常流行的 sting 操作示例”-> 距离 34 和“示例”->“预期的 & 课”-> 距离 18。我怀疑最短的列文斯坦距离总是会给你最好的匹配
-
@MarcoForberg 你错了,因为确实如此。
-
好吧,如果你这么说,我想你是对的。从未以这种方式尝试过这种算法。 @Writwick:如果您不想自己实现它,您也可以使用 Apache commons 中的实现
StringUtils: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…
标签: java android string levenshtein-distance