你知道任何匹配两个字符串的好算法,然后返回这两个字符串匹配的百分比百分比吗?
还有一些,也适用于数据库吗?
答案 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