1

是否有任何工具可以识别和合并 MySQL 表中的非精确重复项?

我有一个包含许多重复项的大型数据集,例如:

1348,  Auto Motors, 12 Long Road, etc
48264, Auto Mtors,  12 Log Road,  etc
82743, Ato Motoers, 12 Lng Road,  etc
83821, Auto Motors, 13 Long Road, etc
92743, Auto Motors, 11 Long Road, etc

有许多表需要合并,例如:

  • 公司
  • 地址
  • 电话号码
  • 雇员

每行(连接表)上大约有 100,000 行和 30-40 列要匹配。

那么,有人知道解决这个问题的工具吗?我已经安装了 MySQL、PHP。如果他们有帮助的话,我之前有/可以使用(d)MongoDB 和 Solr。如果需要,我愿意安装其他软件。


或者,如果我找不到处理此问题的工具,我应该运行哪种查询。

一个简单find all duplicates的方法是行不通的,因为它们不准确。

对于我需要尝试的所有不同组合,进行通配符之类的搜索会非常慢。

使用Oliveror (MySQL)可能会起作用,并且有太多数据需要提取到 PHP 中(也可能非常慢)。Levenshtein

4

2 回答 2

3

您有需要按摩的数据。我不认为这是你可以完全在 sql 中完成的事情。

Google Refine是一个很棒的按摩工具。我会先在 Refine 中加载数据,清理它,然后导入到您的关系数据库中。

于 2012-07-25T22:44:04.827 回答
2

对于我需要尝试的所有不同组合,进行通配符之类的搜索会非常慢。

使用 Oliver 或 Levenshtein (MySQL) 可能会奏效,并且有太多数据需要提取到 PHP 中(也可能非常慢)。

你说这好像是事实,但这正是我所建议的。例如,将一行加载到 php 中。然后遍历所有其他行,匹配您认为合适的各种算法(Levenshtein 或您自己的停用词列表等)。这需要一段时间才能完成,但这大概是您可以一次性完成的任务,或者至少是定期任务(例如,每天一次)

于 2012-07-25T22:46:23.957 回答