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
这也可以帮助:http://www.php.net/manual/en/function.similar-text.php。 similar_text()返回两个字符串中匹配字符的数量。
在比较长字符串时,我认为这一个的性能比levenshtein算法好很多。 – 2012-03-02 21:40:04
根据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
如果“其中一个参数字符串长于255个字符的限制”,levenshtein不起作用。 /: – 2012-03-02 21:52:23
哦,这很聪明。一旦我开始工作,我会将其标记为正确。 ;) – 2012-03-02 21:11:53
@StephenSarcsamKamenar对不起,我在看你使用MySQL的事实。如果你想用PHP而不是MySQL来做到这一点,那么在PHP中有一个内建的levenshtein函数:http://www.php.net/manual/en/function.levenshtein.php – 2012-03-02 21:46:08
Np。出于性能原因,我宁愿在MYSQL中执行此操作。为什么levenshtein函数对两个字符串都有255个字符限制? – 2012-03-02 21:54:38