Мой подход к дедупликации людей при вводе данных заключается в использовании несвязанной формы, которая собирает обязательные поля, затем проверяет существующие данные и представляет список возможных совпадений, отсортированных в порядке убывания близости совпадений. Я использую Soundex () и Soundex2 () для имен различных подстрок для определения ранга.
Вот пример формы «Добавить клиента» из одного из приложений моего клиента:
Точки слева показывают уровень совпадения, с красным для точного (или почти точного - я не могу вспомнить точную формулу), оранжевым для близкого совпадения, затем желтым и для зеленого для очень удаленного Матчи. Ближайшие совпадения находятся вверху списка.
Дело в том, что проверка дубликатов выполняется здесь, когда нажимается кнопка ADD, и затем пользователь должен определить, является ли любое из возможных совпадений реальным дубликатом, а затем добавить или нет.
Другими словами, я полагаюсь на человеческий интеллект, чтобы избежать создания дубликатов, но они могут создать их, если захотят. Но я делаю это как можно проще, чтобы избежать этого.