Способ хорошо известен: берешь миллионы исходных данных и, приводя их к нужному виду, выясняешь закономерности, которые позволяют отнести эту конкретную писанину к перечню этих конкретных записей в ФИАС - если повезет, то еще и примерно оценив для каждой вероятность совпадения.
И даже после этого какой-нибудь хорошо натренированный сервис, увидев адрес в Москве с опечаткой в названии улицы, может предложить какой-нибудь поселок в Башкортостане, где таки есть улица именно с таким названием.
Дмитрий, "Федеральная информационная адресная система" Пример:
Было : г.Липецк, ул. Гагарина, д. 100
Стало: обл Липецкая, г Липецк, ул Гагарина, дом 100
Было : г.Липецк, ул. Меркулова, 31а
Стало: обл Липецкая, г Липецк, ул Меркулова, дом 31А
inilim2, есть готовые решения. У Яндекса или у ДаДаты.
Они потратили кучу усилий, чтобы научиться превращать хаос в данные.
Но на халяву результат не раздают.
Ведь решение этой проблемы - не абстрактный универсальный код, а решение кучи конкретных кейсов. Ноу-хау.
inilim2, мне кажется что таких библиотек нету. Думаю найти библиотеку под какой нибудь фреймоворк которая скачает и запихнет в ДБ базу фиаса можно. а дальше остается только прикрутить поиск
1. ФИАС - всё... https://habr.com/ru/company/hflabs/blog/582108/
2. Проще платить за запросы к DaData, чем писать велосипед. Пробовали, под свои кейсы реализовали, но костыль на костыле костылем погоняет. Слишком неоднозначно всё в этом плане (нормализация).
3. Актуализация данных иной раз тот еще квест!