我有一个 MySQL 数据库和一个 Solr 实例,它是 MySQL 数据库的精确副本。
我们有很多重复的文本(或超过 80% 的相似文本)。从现在开始,这些文本需要捆绑在一起。在 PHP 中,我知道有非常好的函数可以计算这些相似性。
我的问题如下:
我怎样才能聪明地(阅读:尽可能快)将每个新文本与数据库中的现有文本进行比较?我认为从 DB/Solr 读取 200.000 条记录来比较一个新项目并再次比较下一件事不是一个好习惯。
您可以使用SOLR Dedupe它可以
对于类似的文档检测,您必须将您的 signatureClass 设置为TextProfileSignature
然而,这是一个非常模糊的算法,并没有为您提供请求“80% 相似”的选项说实话,我什至想不出办法说这两个文档是“80% 相似”它就是其中之一我猜是通过人类感知在现场进行的统计。
尽管如此,如果您要比较的文本相当长,那么 TextProfileSignature 将产生很好的结果。
请阅读此页面上的含义和限制
您可以安装一个MySQL 插件,为 MySQL实现Levenshtein 距离算法,并让数据库进行比较。