Как лучше всего проверить адрес улицы? - PullRequest
1 голос
/ 24 ноября 2011

При импорте новых адресов в мою БД я делаю проверку орфографии, чтобы увидеть, существует ли улица (новая улица написана только неправильно).

В настоящее время мы используем метод Левенштейна в запросе MySQL для поиска похожих названий улиц. Проблема в количестве улиц. Наличие уличного номера в адресе действительно замедляет поиск сходства / проверку орфографии.

Пример:

Улица ABC 34
Улица ABC 37
Улица ABC 39

Эти названия улиц написаны правильно, но метод Левенштейна считает, что они написаны с ошибками из-за номеров улиц.

Мы разработали функцию PHP, которая берет что-либо после (включая) первую цифру и помещает ее в другой столбец.

Это хорошо работает для улиц с номерами улиц в конце, но не будет работать для стран с номерами улиц в начале.

Мне интересно, работал ли кто-нибудь еще над подобными проблемами?

Обновление
Решение для веб-сайта поиска магазинов, и в настоящее время я работаю над модулем, который будет импортировать списки магазинов.

Одно из решений - использовать Google Maps API и посмотреть, возвращает ли он географический адрес.

Ответы [ 3 ]

3 голосов
/ 24 ноября 2011

О-о, общий адрес - чрезвычайно сложная проблема.Я предлагаю вам выполнить минимальный объем проверки, который вы можете допустить.

Если это, например, для целей доставки, просто используйте раскрывающиеся списки для материала, который, например, будет определять стоимость доставки.Если у вас разные расходы на доставку для разных стран, просто предоставьте текстовую область в свободной форме без проверки и раскрывающийся список стран.Если пользователь не может записать свой адрес, не повезло.Вы можете попросить любого, кто занимается доставкой, проверить адрес «по-человечески».Компании доставки и почтовые компании в основном могут доставлять посылки по адресам с ошибками (в любом случае, почтовая компания Randomcountry, вероятно, знает их названия улиц лучше, чем вы).

Если вам действительно нужны точные адреса, попробуйте найти стороннее решение дляэтот.Использование API Карт Google может работать, и для этого существуют платные решения.

Однако, учитывая ваш алгоритм, на ум приходит следующее решение;просто используйте регулярное выражение для удаления чисел (или даже не букв).Однако имейте в виду, что есть правильные названия улиц, которые являются номерами (т.е. 9-я авеню Нью-Йорка).

1 голос
/ 02 декабря 2011

Вы можете использовать APi для FedEx, UPS, USPS и подтвердить адрес. это сделано для многих сайтов электронной коммерции для доставки адресов ... вот почему иногда вы можете увидеть

"Вы имели в виду этот адрес" ...

Вы также можете сделать это с помощью API Карт Google.

0 голосов
/ 02 декабря 2011

Это очень распространенная проблема. Например, вы можете иметь несколько адресов, которые представляют одно и то же физическое местоположение, но структурированы по-разному. Например:

100 Север 250 Запад 100 север 250 Вт 100 Север 250 Вт 100N 250 West 100 N 250 West 100 север 250 запад

По данным Почтовой службы США, стандартный адрес составляет 100 N 250 Вт. Только путем преобразования каждого из этих адресов в стандартизированный формат вы сможете точно удалить дубликаты и обеспечить согласованные результаты.

Адреса чрезвычайно трудно стандартизировать без какого-либо дополнительного контекста. Контекст, на который я ссылаюсь, представляет собой обновленный основной список всех действительных / подлежащих доставке адресов в стране. На самом деле это недоступно в виде списка (оно будет огромным), но доступно для доступа в виде API. Почтовая служба США делает их API доступными, и есть другие компании, которые берут данные USPS и улучшают их через свой собственный API. Усовершенствования, как правило, заключаются в более быстром обслуживании и гарантированном времени безотказной работы, а также в дополнительных функциях обработки адреса и получения большего количества данных об адресе.

Итак, в быстром ответе, лучший способ проверки орфографии на улице - использовать API для проверки полного адреса.

В целях полного раскрытия информации я являюсь учредителем SmartyStreets , и мы проводим проверку адреса. Если вы некоммерческая организация, вы можете пользоваться нашими услугами бесплатно. Существует несколько компаний по проверке адресов - просто выполните поиск Google для «проверки адреса», и вы найдете кучу.

...