合并松散连接的两个 MySQL 表
Combining two MySQL tables that are loosely connected
所以我在数据库中有两个未连接的 MYSQL table(两个不同的数据源)[每个大约 500,000 行]。他们有公司名称、公司地址、城市、州等信息,以及每个信息中的一些特定信息,一旦我弄清楚如何 'link' 将两者结合在一起,我希望用这些信息填充第三个 table .
我最初的想法是尝试 link 如果公司名称/城市/地址相同,则将它们放在一起。
问题是,对于很多行,两个 table 之间没有完全匹配。因此,在一个公司名称中可能是 'XYZ',在另一个 'XYZ Incorporated' 中,某些地址也是如此,它可能是“123 NW 10th St.”或“西北第十街 123 号”。
所以现在我想找出一种方法来找到 'close enough' 匹配项,而这正是我迷路的地方。以前从来没有做过这样的事情,也不知道从哪里开始。我的想法是我可以设置某种阈值,如果匹配足够接近,我会将这两个 ID 插入另一个 table link 将两者放在一起以供将来处理。
(数据库目前是 InnoDB / MySQL)
非常感谢您的帮助!
我建议创建一个 View
来组合这两个表。为了找出最匹配的字段,我建议使用 "Levenshtein" 距离,或者像 "Jaro/Winkler" 这样更智能的距离。我前段时间经历过类似的事情,我写了一篇博客。
http://dannykopping.com/blog/fuzzy-text-search-mysql-jaro-winkler
所以我在数据库中有两个未连接的 MYSQL table(两个不同的数据源)[每个大约 500,000 行]。他们有公司名称、公司地址、城市、州等信息,以及每个信息中的一些特定信息,一旦我弄清楚如何 'link' 将两者结合在一起,我希望用这些信息填充第三个 table .
我最初的想法是尝试 link 如果公司名称/城市/地址相同,则将它们放在一起。
问题是,对于很多行,两个 table 之间没有完全匹配。因此,在一个公司名称中可能是 'XYZ',在另一个 'XYZ Incorporated' 中,某些地址也是如此,它可能是“123 NW 10th St.”或“西北第十街 123 号”。
所以现在我想找出一种方法来找到 'close enough' 匹配项,而这正是我迷路的地方。以前从来没有做过这样的事情,也不知道从哪里开始。我的想法是我可以设置某种阈值,如果匹配足够接近,我会将这两个 ID 插入另一个 table link 将两者放在一起以供将来处理。
(数据库目前是 InnoDB / MySQL)
非常感谢您的帮助!
我建议创建一个 View
来组合这两个表。为了找出最匹配的字段,我建议使用 "Levenshtein" 距离,或者像 "Jaro/Winkler" 这样更智能的距离。我前段时间经历过类似的事情,我写了一篇博客。
http://dannykopping.com/blog/fuzzy-text-search-mysql-jaro-winkler