【发布时间】:2012-07-24 10:59:58
【问题描述】:
是否有任何工具可以识别和合并 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 不起作用,因为它们不准确。
对于我需要尝试的所有不同组合,进行类似通配符的搜索会非常慢。
使用 Oliver 或 Levenshtein (MySQL) 可能会起作用,而且有太多数据需要拉入 PHP(也可能非常慢)。
【问题讨论】:
-
您是要清理数据,还是只查找一次数字?如果您有时间清理,您可以使用 MySQL full text search 来匹配相关性(尽管这需要一些时间)并允许您清理现有数据 - 然后您将能够运行一些快速比较.
-
@Fluffeh 只是识别数据是关键步骤,如果我能识别它,我可以建立一个合并过程。如果有一个工具可以为我合并它,太好了!全文搜索并不是真正那么好,尤其是在搜索地点和公司名称时会遇到麻烦,因为它们并不总是真实的单词。
-
你看过MySQL操作符SOUNDEX()吗?
-
您需要确定什么是拼写错误 - Ato Motors 或 Log Road 可能都是允许的?
标签: php mysql search full-text-search search-engine