Давайте попробуем соединить несколько идей. Общая ситуация слишком широка, и это будут просто рекомендации / советы / что угодно.
Обычно вам нужны не отношения истинного / ложного совпадения, а оценка для каждого совпадения кандидата. Это потому, что вы никогда не можете быть полностью уверены, что кандидат действительно совпадает.
Оценка является отношением один ко многим. Вы должны быть готовы сравнить каждую запись вашей маленькой БД с несколькими записями основной БД.
Для каждого вида матча должны быть назначены вес и оценка, которые будут суммироваться для общего счета этой пары.
Вы должны попытаться сравнить фрагменты как можно меньше, чтобы обнаружить частичные совпадения. Вместо сравнения [адрес], попробуйте сравнить [город] [штат] [улица] [номер] [кв.
Некоторые поля требуют особой обработки, но этот вопрос слишком широк для этого ответа. Всего несколько советов. Средний инициал в именах и префиксах может добавить некоторую оценку, но должен быть минимальным (так как они многократно пропускаются). Номера телефонов могут иметь переменные префиксы и суффиксы, поэтому иногда требуется сопоставление подстроки. В зависимости от качества данных имена и фамилии должны быть преобразованы в soundex или аналогичные. Названия улиц обычно нормализуются, но в них могут отсутствовать префиксы или суффиксы.
Будьте готовы к длительной работе, если вам нужна высококачественная продукция.
Процентное пороговое значение обычно устанавливается так, что если после обработки частично пары и получения оценки меньше x из максимального значения y, пара отбрасывается.
Если вы ЗНАЕТЕ, что какое-то поле ДОЛЖНО совпадать, чтобы рассматривать пару в качестве кандидата, это обычно значительно ускоряет все.
Структуры данных для сравнения имеют решающее значение, но я не думаю, что мой конкретный опыт будет вам полезен, как я всегда делал подобные вещи на мэйнфреймах: очень высокоскоростные диски, много памяти и массивные параллелизмы , Я мог бы подумать, что имеет отношение к общей ситуации, если вы чувствуете, что некоторая помощь по этому поводу может быть полезной.
НТН!
PS: Почти шутка: в большом проекте, которым я управлял несколько лет назад, у нас была фамилия матери-девы в обеих базах данных, и мы присвоили высокий балл тому факту, что = обе фамилии совпадают (фамилия человека и его матери) ). Мораль: Все Смит-> Смит - это одно и то же лицо:)