Ну вот наконец я добился сборки индексной таблицы для всей России, в общей сложности это v0.5
Дата последнего обновления поиска: 10.09.2012
Что сейчас:
– адресный поиск по нестрогому порядку слов (от регионов до домов)
– поиск идет только по России
– поиск как почтовых адресов, так и POI
– интерфейс будет перерабатываться полностью (уже идет работа Hind и Felis Pimeja), поэтому его косяки не интересны
– группировка нарезанных улиц
– понимание addr:housenumber=“5 К2 С3”
– понимание addr:street2 и addr2:, addr3:
– понимание г., город, ул., улица, д. … мкр., заработало (проблема с кодировкой на серваке)
– для определения принадлежности улиц и домов обязательна граница города/поселка
– обновление вручную
– поиск от текущего положения (текущий город, район, область)
Почему что то не ищется (любой пункт можно изменить, по обоснованной причине):
– ** !! если у членов отношения нет outer/inner, то он игнорируется, и если он был границей - то граница получается поломанной и исключается, а в месте с ней автоматически и все вложенные объекты !!**
– границами города/поселка считаются place (отношение/замкнутая линия) с наличием name или place_name
– улица не должна выходить за пределы города
– пока place=city/town - город, place=village/hamlet - поселок
Что планируется, в зачаточном состоянии:
– онлайн обновление данных
– поиск от текущего положения (расстояние уже вычисляется, то пока не придумал как коэффициент правильно сделать)
– поиск по POI
– life-поиск или подсказка при наборе поисковой строки
– пытаться выдавать наиболее точно то, что хотел пользователь
– зум исходя из размера объекта
– поддержка suburb
Поскольку это еще тестовая версия то:
– выдает техническую информацию, а именно: id-идентификатор позиции в индексной базе, weight-вес релевантности, чем больше тем точнее
Описание api поиска по произвольной строке:
- Пример запроса: openstreetmap.ru/api/search?q=12&lat=54.75&lon=21.4219&cnt=20&callback=‘cb1’
– q - строка поискового запроса
– stype - строка указывающая тип поиска: addr - только адресный поиск, poi - только пои искать, all - addr+poi. По умолчанию all
– lat - широта центра карты. По умолчанию 0
– lon - долгота центра карты. По умолчанию 0
– cnt - максимальное количество ответов. По умолчанию 12
– asis - при 1 выводить как есть, без экранирования спецсимволов html в выводе. По умолчанию 0
– callback - оборачивание ответа в функцию callback - Ответ в формате json:
– find - булевое значение удачности поиска
– search - что искалось
– id - внутренний id в поисковой таблице, может меняться при обновлении
– osm_id_n, osm_id_w, osm_id_r - id объектов osm, массив.
– lat, lon - координаты центра объекта
– addr_type_id - номер типа объекта: 2-области, края, республики,… (admin_level=4); 3-районы,… (admin_level=6); 4-города,… (place=town/city); 5-деревни, села,… (place=village/hamlet); 6-улицы (highway=*); 7-дома (addr:housenumber)
– display_name - выводимое имя
– this_poi - 1 или 0 указывающее нашлось ли пои или адресный объект - При запросе с lat/lon не равных нулю, поиск идет от заданного местоположения.
В общем тестируйте…
На данный момент уже выявлено:
– дублирование Санкт-Петербург
– пустые адреса
– падение на строке типа “5/2”
– дублирование записей, если граница обозначена линией и есть точка внутри её
– не находит объекты с множеством тире в имени
– обработка сокращений в названиях улиц «Большая» до «Б.», «Красный» до «Кр.» ссылка
– поиск дома как “9А”, так и “9 А”
– более не точный поиск, если ничего не нашлось ссылка
P.S. просьба, если не нашлось, давать ссылки то, что должно было найтись