2009-07-01 2 views
5

Я ищу совет по разбору ввода от пользователя в нескольких комбинациях Город/Штат/Почтовый индекс/Страна.Ввод данных пользователя - город/штат/почтовый индекс/страна

Общим примером может служить карта Google.

Некоторые примеры ввода будут:

  • "Город, область, страна"
  • "Город, Страна"
  • "Город, почтовый индекс, страна"
  • «Город, Район , почтовый индекс»
  • „Почтовый индекс“

что бы быть эффективным и правильным способом годовых rse этот вход от пользователя?

Если вы знаете о каких-либо примеров реализации, пожалуйста, поделитесь :)

ответ

0

Я сам очень увлечен, как Google обрабатывает это. Я не помню ничего подобного.

Полагаю, вы пытаетесь отделить строку ввода словами, используя разные разделители - пробел, запятую, точку с запятой и т. Д. Затем у вас есть несколько комбинаций. Для каждой комбинации вы берете каждое слово и сопоставляете его с данными из страны, города, города, базы данных почтовых индексов. Затем вы определяете некоторую метрику о том, как оценивать результат сопоставления групп для каждой комбинации. Здесь также должны быть перекрестные правила, например, если почтовый код не соответствует хорошо, но страна, город, город хорошо сочетаются и в совокупности ссылаются на действительный адрес, тогда метрика дает высокую оценку.

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

Не уверен, есть ли пример реализации. Многие географические услуги предоставляются на платной основе. Что-то сложное, как GoogleMaps, скорее всего, будет стоить целое состояние.

Исправьте меня, если я ошибаюсь.

0

Я нашел простую реализацию PHP

Yahoo, кажется, есть веб-сервиса, который предлагает функциональность (вроде)

OpenStreetMap, кажется, предлагают те же функции поиска на своей домашней странице

1

Первый шаг должен был бы разбить текст на отдельные лексемы, используя пробелы или запятые, как в ограничивающими символов.Для масштабируемости вы можете передать каждый токен потоку или серверу (при использовании архитектуры Map-Reducer), чтобы выяснить, что такое каждый токен. Например,

  • Если у нас есть номера в шаблоне, то это, вероятно, почтовый индекс.
  • Является ли элемент в списке известных состояний?
  • Страны также довольно просты в обращении, как и государства, существует ограниченное число.
  • В каком порядке указаны токены по сравнению с обычными способами написания адреса? Большинство входных данных, вероятно, будут соответствовать местному почтовому отделению для адресных форматов.

После того, как у вас есть результаты индивидуального токена, вы можете приклеить детали назад, чтобы получить полный адрес. В случаях, когда есть вопросы, вы можете подсказать пользователю, что они на самом деле имели в виду (например, карты Google), и добавить эту информацию в узнаваемый список.

Самый простой способ добавить эту поддержку приложениям, если вы не пытаетесь создать систему карт, заключается в том, чтобы запросить Google или Yahoo и попросить их разобрать дату для вас.

0

Предполагая, что вы имеете дело только с этими четырьмя полями (City Zip State Country), существуют конечные значения для всех полей, кроме Города, и даже если я знаю, что у вас есть большой список городов, также конечный. Поэтому просто разделите каждое поле на запятую, затем проверьте каждый список полей.

Предположим, что мы говорим США адресов:

  • Zip является наиболее очевидным, поэтому проверьте , что в первую очередь.
  • государство имеет варианты 50x2 (Калифорния или CA), убедитесь, что следующий
  • Страна имеет ~ 190x2 варианты, в зависимости о том, как охватывает вы хотите быть (США, Соединенные Штаты Америки, США).
  • Все, что осталось, вероятно, ваш Город.

Что касается эффективности, то, возможно, имеет смысл сначала проверить несколько стандартных форматов, как предлагает Дэн.