在MYSQL / PHP中检查重复TEXT字段的最佳方法是什么?

时间:2011-02-04 20:13:57

标签: php mysql hash duplicates

我的代码提取~1000个HTML文件,提取相关信息&然后将该信息存储在MySQL TEXT字段中(因为它通常很长)。我正在寻找一个系统来防止数据库中的重复条目

我的第一个想法是在表格中添加一个HASH字段(可能是MD5),在每次运行开始时拉出哈希列表&在插入数据库之前检查重复项。

第二个想法是存储文件长度(字节或字符或其他),索引,和&检查重复的文件长度,如果找到重复的长度则重新检查内容。

不知道性能方面的最佳解决方案是什么。也许有更好的方法?

如果有一种有效的方法可以检查文件是否与理想的95%相似,但我怀疑是否存在?

感谢您的帮助!

BTW我正在使用PHP5 / Kohana


编辑:

只是想知道检查相似性:我可以计算所有字母数字字符&记录每个

的出现次数

例如:17aB ... = 1a,7b,10c,27c,......

潜在的问题是字数的上限(大约61?)

我认为误报仍然很少见。 。

好主意/坏主意?

2 个答案:

答案 0 :(得分:2)

哈希想法可能是最好的。你可能会发生碰撞,但它们非常罕见。

使哈希字段成为表的唯一键,并捕获重复的错误代码。或使用insert ignoreinsert replace

答案 1 :(得分:0)

这听起来不错,我已经实现了类似的东西。哈希字段应该是一个键,因为不允许重复。

如果每个文本记录很长,您可以计算每个记录的哈希值的常数多个(例如2个)。那么也许只要其中一个是相同的,那就够了。显然,你对每个记录的散列越多,你就越接近比较全文。

MD5是16个字节。随着时间的推移会有多少潜在的哈希?如果这个数字保持合理,你应该可以在内存中进行比较。