3

你知道有什么好的算法可以匹配两个字符串,然后返回这两个字符串匹配的百分比吗?

还有一些也可以与数据库一起使用吗?

4

5 回答 5

8

列文斯坦距离就是这样一种度量。它基本上告诉您从第一个字符串到第二个字符串需要编辑、删除或添加多少个字符。我不确定某些数据库系统是否支持这一点。

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

于 2008-12-09T08:05:59.303 回答
2

这取决于您的相似性标准。其他人已经向您推荐了 Levenstein 距离(编辑距离是一回事)。这通常非常好,而且肯定比 soundex 之类的更独立于语言。但是,请注意 Levenstein 差异不能很好地处理转置。因此:

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

如果您尝试处理人工输入,则换位相当普遍。这是否是一个问题取决于您的相似性指标。

已经有一段时间了,但我相信 Postgresqllevenstein()要么是内置的,要么可以作为contribC 模块使用。

于 2008-12-09T14:25:00.753 回答
1

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

于 2008-12-09T08:06:04.887 回答
1

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

于 2010-06-17T16:17:29.330 回答
0

这会有帮助吗?我刚碰到它。比较两个字符串产生一个数字增量

于 2008-12-09T08:07:41.577 回答