python - 接近原始文本输入的良好哈希算法,较少的雪崩效应?

标签 python mysql string-matching

我们需要在 MySQL 表中存储一个文本字段(比如 2000 个字符)及其唯一哈希值(比如 SHA1)。 为了测试该文本是否已存在于 MySQL 表中,我们生成文本的 SHA1,并查找它是否存在于唯一字段 hash 中。

现在假设有两个文本:

  1. “这是将存储在数据库中的文本,并将生成其哈希值”
  2. “这是文本,将存储在数据库中并生成其哈希值。”

注意细微差别。

假设 1 已经添加到数据库中,对 2 的检查将不起作用,因为它们的 SHA1 哈希值将大不相同。

一个明显的解决方案是使用 Leveinstein 距离或 difflib 迭代所有已添加的文本字段,以从 MySQL 表中精确匹配。

但这不是以性能为导向的。 是否有一种与文本内容相关的良好哈希算法?即,为非常相似的文本生成的两个哈希值本身将非常相似。

这样可以更容易地在将它们添加到 MySQL 表之前检测到可能的重复项。

最佳答案

听起来您正在寻找对位置敏感的散列。除了Wikipedia article ,在此站点上运行搜索以获得一些指示。

关于python - 接近原始文本输入的良好哈希算法,较少的雪崩效应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15919063/

相关文章:

xml - 如何在 Python 中以简单的方式拆分 XML 文件?

python - urllib.error.URLError : <urlopen error unknown url type: https>

python - Scrapy:如何让两个爬虫依次运行?

检查元音的 JavaScript 函数

java - 使用 Java 字典进行高效字符串搜索

string-matching - 一种更好的变长字符串相似度排序算法

python - 有没有 beautifulsoup 函数可以选择重复的类名?

php - 将图像和信息存储到数据库中并使用 MySql 查询检索以使用 PHP 显示

php - 更新语句错误

mysql - 在 Laravel 5 应用程序中获取多对多关系的数据透视字段值