Php MYSQL发现两个文本字段有多不同?

Php MYSQL发现两个文本字段有多不同?,php,mysql,string,email,text,Php,Mysql,String,Email,Text,我正在数据库中存储电子邮件的HTML内容 如果我在我的数据库中存储了两封相同的电子邮件,由于个性化的原因,这两封电子邮件会有一点不同(一封可能会说“你好,斯蒂芬,谢谢你订阅…”,另一封可能会说“你好,安德鲁,谢谢你订阅…”) 如何判断这些文本字段只是略有不同?(可能会得到一个百分比,说他们95%相似)。这是MySQL的一个很好的起点: Levenshtein距离是将一个字符串转换为另一个字符串所需的编辑次数。你可能会把这个距离除以字符串的长度来得到排序的百分比 对于PHP,有一个内置的Leve

我正在数据库中存储电子邮件的HTML内容

如果我在我的数据库中存储了两封相同的电子邮件,由于个性化的原因,这两封电子邮件会有一点不同(一封可能会说“你好,斯蒂芬,谢谢你订阅…”,另一封可能会说“你好,安德鲁,谢谢你订阅…”)


如何判断这些文本字段只是略有不同?(可能会得到一个百分比,说他们95%相似)。

这是MySQL的一个很好的起点:

Levenshtein距离是将一个字符串转换为另一个字符串所需的编辑次数。你可能会把这个距离除以字符串的长度来得到排序的百分比


对于PHP,有一个内置的Levenshtein函数:

这是MySQL的一个很好的起点:

Levenshtein距离是将一个字符串转换为另一个字符串所需的编辑次数。你可能会把这个距离除以字符串的长度来得到排序的百分比

对于PHP,有一个内置的Levenshtein函数:

这也有帮助:。 similor_text()返回两个字符串中匹配的字符数。

这也可能有帮助:。
similor_text()返回两个字符串中匹配的字符数。

噢,snap,这很聪明。我一开始工作就会把它标记为正确的@StephenSarcsamKamenar抱歉,我看到的是您正在使用MySQL。如果您想在PHP而不是MySQL中执行此操作,那么PHP:Np中有一个内置的levenshtein函数。出于性能方面的考虑,我更愿意在MYSQL中使用它。为什么levenshtein函数对两个字符串都有255个字符的限制?@StephenSarcsamKamenar我想这可能是任意的(当你进入更大的字符串时,它会变慢)。例如,您可能可以将它们更改为
VARCHAR(1024)
,但请确保将过程中的
VARBINARY(256)
更改为
VARBINARY(1025)
以匹配。当然,也要更新helper函数。哦,很聪明。我一开始工作就会把它标记为正确的@StephenSarcsamKamenar抱歉,我看到的是您正在使用MySQL。如果您想在PHP而不是MySQL中执行此操作,那么PHP:Np中有一个内置的levenshtein函数。出于性能方面的考虑,我更愿意在MYSQL中使用它。为什么levenshtein函数对两个字符串都有255个字符的限制?@StephenSarcsamKamenar我想这可能是任意的(当你进入更大的字符串时,它会变慢)。例如,您可能可以将它们更改为
VARCHAR(1024)
,但请确保将过程中的
VARBINARY(256)
更改为
VARBINARY(1025)
以匹配。当然,也要更新helper函数。我认为在比较长字符串时,这个函数的性能要比levenshtein算法好得多。根据PHP手册,levenshtein比类似的文本更快。levenshtein是O(m*n)(m是字符串1的len,n是字符串2的len),而类似的文本是O(n**3)(n是最长字符串的len)。如果“其中一个参数字符串超过255个字符的限制”,levenshtein就不起作用了/:我认为在比较长字符串时,此算法的性能要比levenshtein算法好得多。根据PHP手册,levenshtein比类似的文本更快。levenshtein是O(m*n)(m是字符串1的len,n是字符串2的len),而类似的文本是O(n**3)(n是最长字符串的len)。如果“其中一个参数字符串的长度超过255个字符的限制”,levenshtein就不起作用了