Итак, у меня есть две таблицы MYSQL в БД, которые не связаны (два разных источника данных) [около 500 000 строк в каждой]. У них есть такие вещи, как название компании, бизнес-адрес, город, штат, а также некоторая конкретная информация в каждой, которую я надеялся заполнить третьей таблицей, как только я выяснил, как «связать» их вместе.
Сначала я попытался связать их вместе, если название компании / город / адрес совпадали.
Проблема в том, что для многих строк нет точного соответствия между двумя таблицами. Таким образом, в одном название компании может быть «XYZ», в другом «XYZ Incorporated», то же самое касается некоторых адресов, это может быть «123 NW 10th St.» или «123 северо-западная десятая улица».
Так что теперь я пытаюсь найти способ найти «достаточно близкое» совпадение, и вот где я потерялся. Никогда не делал ничего подобного раньше, и не знал бы, с чего начать. Я думал, что смогу установить какой-то порог, при котором, если совпадение будет достаточно близким, я вставлю два идентификатора в другую таблицу, связав их вместе, для дальнейшей обработки.
(Базы данных в настоящее время InnoDB / MySQL)
Большое спасибо за любую помощь!
Я бы предложил создать View
который объединяет две таблицы. Чтобы выяснить, какие поля соответствуют наиболее близко, я бы рекомендовал использовать расстояние «Левенштейна» или что-то более умное, например «Jaro / Winkler». Некоторое время назад я прошел через нечто подобное и написал об этом в блоге.
http://dannykopping.com/blog/fuzzy-text-search-mysql-jaro-winkler
Других решений пока нет …