2

我有一个 MySQL 数据库和一个 Solr 实例,它是 MySQL 数据库的精确副本。

我们有很多重复的文本(或超过 80% 的相似文本)。从现在开始,这些文本需要捆绑在一起。在 PHP 中,我知道有非常好的函数可以计算这些相似性。

我的问题如下:

我怎样才能聪明地(阅读:尽可能快)将每个新文本与数据库中的现有文本进行比较?我认为从 DB/Solr 读取 200.000 条记录来比较一个新项目并再次比较下一件事不是一个好习惯。

4

2 回答 2

2

您可以使用SOLR Dedupe它可以

  • 防止重复/类似的文档进入您的索引
  • 或防止从您的搜索中返回重复/相似的结果
  • 或折叠搜索中的重复/相似结果

对于类似的文档检测,您必须将您的 signatureClass 设置为TextProfileSignature

然而,这是一个非常模糊的算法,并没有为您提供请求“80% 相似”的选项说实话,我什至想不出办法说这两个文档是“80% 相似”它就是其中之一我猜是通过人类感知在现场进行的统计。

尽管如此,如果您要比较的文本相当长,那么 TextProfileSignature 将产生很好的结果。

请阅读此页面上的含义和限制

于 2013-08-08T11:55:46.293 回答
0

您可以安装一个MySQL 插件,为 MySQL实现Levenshtein 距离算法,并让数据库进行比较。

于 2013-08-08T10:36:00.333 回答