Страница 1 из 1

Разбор строки адреса на составляющие

Добавлено: 30 дек 2009, 13:42
margalencia
Добрый день!

Существует проблема лексико-синтаксического анализа строки адреса, с целью выделить из строки страну, область, улицу и т.п.
Например, для строки "Рязанская область г. Рязань ул. Соборная дом 34/56", выделить область: Рязанская, город: Рязань, улица: Соборная, дом: 34/56
С этим хорошо справляются, например, Яндекс-карты.

Возможно, кто-то встречался с описанием подобного алгоритма, буду благодарна за любую информация по данному вопросу.

Re: Разбор строки адреса на составляющие

Добавлено: 02 янв 2010, 22:38
arzobispo
А в какой БД хранится инфа? Просто в MS Access это делается в два счета :)
Там (в указанной ранее программе) делается многоуровневая маска и каждый из результатов записывается в отдельную ячейку. В других СУБД возможно делается похоже.

Re: Разбор строки адреса на составляющие

Добавлено: 02 янв 2010, 23:59
AndreyL
Так пойдет?

Re: Разбор строки адреса на составляющие

Добавлено: 04 янв 2010, 03:12
Boris
arzobispo писал(а):А в какой БД хранится инфа? Просто в MS Access это делается в два счета :)
Там (в указанной ранее программе) делается многоуровневая маска и каждый из результатов записывается в отдельную ячейку. В других СУБД возможно делается похоже.
Не пожадничаете пример этой маски? Может сгодится кому.

Re: Разбор строки адреса на составляющие

Добавлено: 05 янв 2010, 23:01
arzobispo
Завтра вечерком скину :)

Re: Разбор строки адреса на составляющие

Добавлено: 11 янв 2010, 13:46
margalencia
А в какой БД хранится инфа? Просто в MS Access это делается в два счета :)
Там (в указанной ранее программе) делается многоуровневая маска и каждый из результатов записывается в отдельную ячейку. В других СУБД возможно делается похоже.
Информация хранится в БД MySQL, строка адреса получается при парсинге xml-файла.

Антон, пришлите и мне, пожалуйста, маску.
Так пойдет?
Тут у Вас видимо не универсальный способ.

Re: Разбор строки адреса на составляющие

Добавлено: 12 янв 2010, 09:01
arzobispo
Приведу пример из одной из БД, что делал ранее.
Что отрезаем: Left([Поле из БД];(InStr([Поле из БД];"_")+3))
Продолжаем отрезать: Mid([Поле из БД];Nz(InStr([Поле из БД];"_")+3)+2)
Для удобства прилагаю скрины.