我们需要在 MySQL 表中存储一个文本字段(比如 2000 个字符)及其唯一哈希值(比如 SHA1)。
为了测试该文本是否已存在于 MySQL 表中,我们生成文本的 SHA1,并查找它是否存在于唯一字段 hash
中。
现在假设有两个文本:
- “这是将存储在数据库中的文本,并将生成其哈希值”
- “这是文本,将存储在数据库中并生成其哈希值。”
注意细微差别。
假设 1 已经添加到数据库中,对 2 的检查将不起作用,因为它们的 SHA1 哈希值将大不相同。
一个明显的解决方案是使用 Leveinstein 距离或 difflib 迭代所有已添加的文本字段,以从 MySQL 表中精确匹配。
但这不是以性能为导向的。 是否有一种与文本内容相关的良好哈希算法?即,为非常相似的文本生成的两个哈希值本身将非常相似。
这样可以更容易地在将它们添加到 MySQL 表之前检测到可能的重复项。
最佳答案
听起来您正在寻找对位置敏感的散列。除了Wikipedia article ,在此站点上运行搜索以获得一些指示。
关于python - 接近原始文本输入的良好哈希算法,较少的雪崩效应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15919063/