Python 好的散列算法,接近原始文本输入,减少雪崩效应?
我们需要在MySQL表中存储一个文本字段(比如说2000个字符)及其唯一的散列(比如SHA1)。 为了测试MySQL表中已经存在的文本,我们生成文本的SHA1,并查找它是否存在于唯一字段Python 好的散列算法,接近原始文本输入,减少雪崩效应?,python,mysql,string-matching,Python,Mysql,String Matching,我们需要在MySQL表中存储一个文本字段(比如说2000个字符)及其唯一的散列(比如SHA1)。 为了测试MySQL表中已经存在的文本,我们生成文本的SHA1,并查找它是否存在于唯一字段哈希中 现在让我们假设有两个文本: 这是将存储在数据库中的文本,并将生成其哈希 这是文本,将存储在数据库中并生成其哈希 注意细微的差别。 假设1已经被添加到数据库中,那么对2的检查将不起作用,因为它们的SHA1哈希值将完全不同 一个明显的解决方案是使用Leveinstein distance或difflib迭代所
哈希中
现在让我们假设有两个文本:
这是将存储在数据库中的文本,并将生成其哈希
这是文本,将存储在数据库中并生成其哈希
注意细微的差别。
假设1已经被添加到数据库中,那么对2的检查将不起作用,因为它们的SHA1哈希值将完全不同
一个明显的解决方案是使用Leveinstein distance或difflib迭代所有已添加的文本字段,以从MySQL表中精细匹配
但这不是以性能为导向的。
是否有一个与文本内容相关的好的散列算法?i、 e.为非常相似的文本生成的两个哈希值本身非常相似
这样,在将可能的重复项添加到MySQL表中之前,可以更容易地检测它们。我非常怀疑您要查找的内容是否存在,因此我提出了一个更简单的解决方案:
提出一个用于规范化文本的简单算法,例如:
- 规范化空白
- 删除标点符号
然后,计算该散列并将其存储在单独的列(normalizedHash
)中,或者将ID存储到一个规范化散列表中。然后,您可以通过标准化内容比较这两个不同的条目。我非常怀疑您要查找的内容是否存在,因此我提出了一个更简单的解决方案:
提出一个用于规范化文本的简单算法,例如:
- 规范化空白
- 删除标点符号
然后,计算该散列并将其存储在单独的列(normalizedHash
)中,或者将ID存储到一个规范化散列表中。然后,您可以通过两个不同的条目的标准化内容来比较它们。听起来您在寻找对位置敏感的哈希。除此之外,在该站点上运行搜索以获取一些指针。听起来您正在寻找对位置敏感的哈希。除此之外,在该站点上运行搜索以获取一些指针