mysql - 如何从 ~200k 文本/html 生成与相似文本匹配/比较的散列?

标签 mysql performance stored-procedures mysql-5.5 function

我想用文本(在我的例子中是 html)制作一种哈希键,与其他类似文本的哈希匹配/比较

匹配文本示例:

  • “2012/10/01 这是我的网页 #1”+ 100k_of_same_text + random_words_1 + ..
  • “2012/10/02 这是我的网页 #2”+ 100k_of_same_text + random_words_2 + ..
  • ...
  • “2012/10/02 这是我的网页#2”+ 100k_of_same_text + random_words_3 + ..

到目前为止,我已经考虑过删除数字和标签,但仍然会留下随机单词。

外面有什么东西可以这样吗?

我有服务器的 root 权限,所以我可以添加任何必要的 UDF,如果需要,我可以用 c 或其他语言进行处理。

理想的是像 generateSimilarHash(text) 这样的函数和一个返回匹配文本百分比的函数 compareSimilarHashes(hash1,hash2)

像 compare(text1,text2) 这样的任何函数都不会像我的情况那样工作,因为我有很多页面要比较(目前约 2000 万)

欢迎任何建议!


更新:

我指的是维基百科上描述的散列函数:

A hash function is any algorithm or subroutine that maps large data sets of variable length to smaller data sets of a fixed length.

在我的情况下,固定长度 部分不是必需的。

最佳答案

听起来您需要使用像 diff 这样的程序。

如果您只是想比较文本,散列不是可行的方法,因为输入的细微差别会导致输出的完全不同。 (因此它们被用来编码密码和保护文本的原因)。字符差异程序非常复杂,除非您真的对它们的工作原理感兴趣并且正在尝试编写自己的程序,否则我只会使用此处所示的解决方案,使用 sdiff 来获取百分比。

Percentage value with GNU Diff

关于mysql - 如何从 ~200k 文本/html 生成与相似文本匹配/比较的散列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760613/

相关文章:

.net - DataGridView 在我的两个屏幕之一上的重绘性能非常糟糕

bash - 从 Bash 脚本在 PostgreSQL 中创建 FUNCTION

c# - 以动态/编程方式将 WHERE 子句添加到 SQL

php - 统计本周的记录

mysql - MySQL 的解码函数

MySQL学生数据库

mysql - 'case' 语句中的子句之一的条件失败

mysql - MySQL InnoDB 引擎是否为只读事务运行任何性能优化

c++ - 如何更快地绘制许多带纹理的四边形,并保留 glScissor(或类似的东西)?

c# - 什么时候可以使用 ClearAllPools 方法?