MYSQL如何找到两个不同的文本字段?

问题描述:

我将电子邮件的HTML内容存储在我的数据库中。MYSQL如何找到两个不同的文本字段?

如果我将两个相同的电子邮件存储在我的数据库中,由于个性化(可能会说“Hello Stephen,感谢您订阅...”,而另一个“Hello Andrew,谢谢你订阅......“)。

我如何判断这些文本字段只是略有不同? (也许有百分比表示他们是95%相似)。

这里是一个很好的起点为MySQL: http://www.artfulsoftware.com/infotree/queries.php#552

一个Levenshtein距离是将一个字符串到另一个需要编辑的数量。你可能会把这个距离除以字符串的长度来得到一个百分比。

对于PHP,有一个内置的莱文斯坦功能:http://www.php.net/manual/en/function.levenshtein.php

+0

哦,这很聪明。一旦我开始工作,我会将其标记为正确。 ;) – 2012-03-02 21:11:53

+0

@StephenSarcsamKamenar对不起,我在看你使用MySQL的事实。如果你想用PHP而不是MySQL来做到这一点,那么在PHP中有一个内建的levenshtein函数:http://www.php.net/manual/en/function.levenshtein.php – 2012-03-02 21:46:08

+0

Np。出于性能原因,我宁愿在MYSQL中执行此操作。为什么levenshtein函数对两个字符串都有255个字符限制? – 2012-03-02 21:54:38

这也可以帮助:http://www.php.net/manual/en/function.similar-text.php。 similar_text()返回两个字符串中匹配字符的数量。

+0

在比较长字符串时,我认为这一个的性能比levenshtein算法好很多。 – 2012-03-02 21:40:04

+0

根据PHP手册,levenshtein比similar_text更快。 levenshtein是O(m * n)(m是字符串1的len,n是字符串2的len),而similar_text是O(n ** 3)(n是最长字符串的len)。 – 2012-03-02 21:45:06

+0

如果“其中一个参数字符串长于255个字符的限制”,levenshtein不起作用。 /: – 2012-03-02 21:52:23