如何最好地匹配两个字符串?

时间:2008-12-09 07:55:24

标签: database algorithm string matching

你知道任何匹配两个字符串的好算法,然后返回这两个字符串匹配的百分比百分比吗?

还有一些,也适用于数据库吗?

5 个答案:

答案 0 :(得分:8)

Levenstein distance就是这样一种衡量标准。它基本上告诉你需要编辑,删除或添加多少个字符才能从第一个字符串到第二个字符串。我不确定某些数据库系统是否支持这种情况。

但我确信在某些数据库系统中支持更简化的名为Soundex的算法。

答案 1 :(得分:2)

这取决于您的相似性标准。其他人已经提到你Levenstein距离(编辑距离是一回事)。这通常是非常好的,并且肯定比soundex更像语言独立。但是,请注意Levenstein的差异并不能很好地处理换位。因此:

Levenstein("copy", "cpoy") == 2

如果您正在尝试处理人类输入,则换位很常见。这是否是一个问题取决于您的相似度量。

已经有一段时间了,但我相信Postgresql有levenstein()内置或可用作contrib C模块。

答案 2 :(得分:1)

我认为您正在寻找的问题称为Edit Distance。一般来说计算成本很高,但如果你在其他字符串的小编辑距离内寻找字符串,那就不是那么糟糕了。维基百科文章中有更多信息。

答案 3 :(得分:1)

如何最好地匹配两个字符串?让他们出去喝咖啡,如果他们一拍即合,晚餐和电影。或者也许他们可以做一些同行编程?这取决于字符串,真的。即使是咖啡也常常很棘手。

答案 4 :(得分:0)

这会有帮助吗?我刚碰到它。 Comparing Two Strings producing a numeric delta