比较DB的200.000文本

时间:2013-08-08 10:29:24

标签: php mysql string solr

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

我们有很多重复的文本(或类似的文字超过80%)。这些文本需要从现在开始捆绑。在PHP中,我知道有很好的函数来计算这些模拟性。

我的问题如下:

我如何智能(尽可能快地阅读)将每个新文本与数据库中的现有文本进行比较?我不认为从DB / Solr读取200.000条记录来比较一个新项目,以及接下来的事情,这是一个好习惯。

2 个答案:

答案 0 :(得分:2)

您可以使用SOLR Dedupe

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

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

然而,这是一个非常模糊的算法,并没有为您提供请求“80%相似”的选项。说实话我甚至想不出一种方式来说这两个文件是“80%相似”它是我想是通过人类感知在现场制作的统计数据之一。

如果您要比较的文本相当长,那么TextProfileSignature将会产生很好的效果。

请阅读Implications and limitations on this page

答案 1 :(得分:0)

您可以为MySQL安装MySQL plugin实现Levenshtein distance algorithm并让数据库进行比较。