Страница 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)
Для удобства прилагаю скрины.