我最近在我们的搜索引擎数据库中实现了levenshtein算法,但我们遇到了一个问题。
根据基本的levenshtein
Levenshtein('123456','12x456')与Levenshtein('123456','12345x')的价值相同
通常这很好,但对于我的具体问题是不正确的。当有人使用我们的网站时,这是不正确的。电子元件制造商通常制造类似的产品,最后一个字母只有不同之处。如果第一个字母不同,它通常是完全不同的类别。因此,我需要一种算法,该算法认为在单词开头附近的匹配比在后面的那些更有价值,或者换句话说,在开头附近发生的不匹配应该比后面的那些应用更大的惩罚。
如果有任何人有任何想法,请告诉我。
答案 0 :(得分:2)
参见生物信息学中广泛使用的Smith-Waterman算法。它可以执行查询的本地对齐,但这将比Levenshtein慢。
答案 1 :(得分:2)
使用Jaro-Winkler Distance ......这正是您所要求的。
答案 2 :(得分:1)
我们遇到了类似的问题并使用了Brew edit distance method
我们在Perl,所以我们使用了Text::Brew库。我的同事做了一个关于使用few different algorithms的精彩演讲,包括Brew。