导入数据库时​​比较数据的最佳方法是什么?

Ste*_*ven 6 php mysql algorithm levenshtein-distance

我有一个MySQL数据库表,包含大约1000家商店的信息.现在我将通过上传Excel电子表格来导入更多商店,我正在努力避免重复.

  • 商店可能具有相同的名称,但从不相同的地址.
  • 商店可能拥有相同的地址,但名称从不相同

但这是我的问题.

  • 商店可能拼写错误
  • 地址可能会拼写错误

目前我正在将数据导入临时表.现在我想知道将进口商店与现有商店进行比较的最佳方法是什么.

我的计划是通过每一行并比较商店.

  • 首先比较a.name = b.name和a.street = b.street.在比赛中,商店被删除.
  • 然后我将在名称和街道上进行Levenshtein比较.在这里,我可能需要手动查看结果以确定它是否重复.

有没有人有这种数据比较的经验?

更新
感谢您的回答.

将用于比较的字段是:

  • 名称
  • 街道地址
  • 邮政编码
  • 国家

我正在考虑以下几点:

选择name = Lavenshtein和country = country的行.
这样我只需要处理一个小清单.

然后我可以更彻底地比较姓名和地址.

Sha*_*nak 4

Levenshtein-distance就是这样做的方法,可以避免手动输入。但实际的实施将取决于某种有关数据的先验知识。比如你预计拼写中有多少错误。

例如,假设它是一个高质量的数据,并且您只期望拼写错误,您可以基于以下条件生成匹配条件:1)单词数是否相同?2) 这些单词的序列 3) 名称中每个单词的编辑距离允许错误的小阈值。

当名称不明确时,可以通过检查具有类似条件的地址来加强条件,反之亦然。

  • 正如肖纳克所说,Levenshtein 是一个很好的方法。还可以考虑去掉“噪音”单词并将缩写转换为相同的单词。我以前做过公司名称的比较,如果(例如,对于英国公司)去掉“the”、“Limited”、“Ltd”,将所有“Co”转换为“Company”,比较效果会更好、“UK”到“英国”、“1ST”到“FIRST”等等。当您开始时,您将更多地了解您的数据需要什么 - 只需将所有商店名称放入有序列表中即可给您一些提示。 (3认同)