«2-й рощинский проезд, 301» — так в подсказках и нет такого адреса. Вы, может быть, имеете в виду API стандартизации? Там мы действительно разрешаем отсутствующие в КЛАДР номера домов, так как что в КЛАДР, что в ФИАС есть далеко не все дома страны.
«5-ая улица Ямского поля дом дом 5, строение 1» — да, с такими улицами есть некоторые проблемы как раз в стандартизации, работаем над этим.
От всей команды «Кладра в облаке» скажу, что нам очень стыдно, что мы так безбожно затянули релиз поиска одной строкой. Ведь начали его делать уже более чем 4 месяца назад, а подготовленная база данных со всеми штуками и индексами давно уже на продакшене.
Плюс у нас в тесте пачка других фич, но финально дотестить, вылезать все моменты и тп, ну, кому я это рассказываю, вы сами все понимаете. Наши любимые пользователи, прошу простить и понять :) скоро все будет! :)
В опросе не звучало «бесплатный», поэтому отвечу: используем 2Гис. Гемороя тоже достаточно, бывает возвращает не релевантные результаты, или дубликаты одного и того же адреса. Ну и платный он, к тому же не так уж и дешево.
В связи с этим, сделали следующую схему: изначально поиск проходит по нашей базе данных (импортировано около 60 000+ адресов Питера, поиск только по этому городу необходим), все индексируется в ElasticSearch, поэтому скорость хорошая. Далее, если адрес не найден, производится попытка получения у 2Гис. В принципе, работает неплохо.
А ещё есть OpenStreetMap и Nominatim — адресный поиск для него. Правда, я не пробовал использовать его именно как источник вариантов для автодополнения, но это вполне возможно — Номинатим возвращает массив, содержащий до десяти подходящих результатов. Среди возвращаемого есть и адрес одной строкой.
Допустимая интенсивность использования, согласно Usage policy — не более одного запроса в секунду.
OSM кривоват немного.
Когда я сводил воедино КЛАДР и OSM только — Левенштейн и спасал.
Ну и не содержит он многие полезные данные (окато/октмо). Хотя дает для ОМК УМ, который даже не знаю где еще можно взять.
Каждый раз когда слышу про эти автокомплиты и кладры в облаке — совесть мучает.
Сам обладаю почти что самой полной базой данных, а АПИ не приделал (в том числе даже для себя)
В своих проектах испольую базу ФИАС и самописное приложение django-fias
Это конечно не сервис, но вдруг кому пригодится.
ЗЫ
полнотекстовый поиск так же имеется
Спасибо за ссылку — посмотрю ваше приложение.
Некоторое время назад тоже конвертировал (для проекта на django) БД ФИАС из dbf в PostgreSQL, но не всю а только для нужного региона — взамен устаревшему КЛАДРу, который использовался для автодополнения улиц.
Хотел спросить — как вы обновляете БД — заново импортируете все с нуля, икрементно апдейты заливаете или еще как-то?
База-то очень большая.
Заранее спасибо!
Обновляется инкрементно, благо, налоговая соответствующее API предоставила.
База действительно большая (сейчас где-то 1 200 000 записей — это только адреса. домов вообще не считал сколько) и процесс обновления не особо оптимизирован — одно из обновлений весит около 500 мб (76 или 77 версия) в архиве — оно у меня пол дня обновлялось.
Очень приятно начинать день с таких хороших постов про свой сервис, спасибо большое за настроение:)
По поводу АПИ — мы активно работаем и развиваем его, скоро появится много нового как с точки зрения функционала, так и с точки зрения взаимодействия. Вдобавок, мы внимательно слушаем все отзывы, если хотите видеть что-то определённое — пишите!
В БД используется КЛАДР.
Всегда пожалуйста, тем более это я Вам должен говорить спасибо за хороший продукт.
Хочу видеть ограничение области поиска по области/городу. В идеале, чтобы можно было ограничить несколькими областями (например Москва/МО + Санкт-Петербург/Ленобласть)
Интернет магазин. Я думаю, Вы согласитесь, что автодополнение адреса в интернет магазине — вещь приятная, но вовсе необязательная. И если вдруг uptime будет процентов даже 95%, ничего страшного не произойдет, пользователь и сам введёт адрес.
Не очень понятно, почему искалось именно такое дополнение, которое может работать, а может и не работать. Не лучше сразу стремиться к тому, чтобы все работало без сбоев?
Потом, в случае отключения автозаполнения, нужно продумывать дублирующий интерфейс — опасный путь. На этапе оформления крайне желательно максимально упростить и обеспечить безотказность, иначе, велик риск потери клиента. А клиент, начавший оформление — это совсем не просто посетитель, он дорогого стоит.
primepix, у вас последняя версия базы ФИАС, как часто обновляете ее? Мы столкнулись что по КЛАДРу который на сайте ФНС и у вас в сервисе получается разный код КЛАДР.
не хватает параметра отсеивания устаревших адресов (с 01 на конце), можно конечно и самим отфильтровать, но приятно получить из коробки да и меньше таскать данных =)
Это было реализовано в последнем обновлении, так что сейчас это должно работать как вы описали.
При этом, точный запрос по коду даже устаревшему (с 01 и тп на конце) вернет данные об объекте, но поиск по названию их проигнорирует
goooseman, спасибо за обзор! А можете пояснить свою мысль? Чем у DaData неочевиден POST и в чем скудность API? Мы будем рады сделать его более удобным :-)
Кстати, помимо подсказок у нас есть стандартизация и проверка телефонов и email. Ее тоже можно вызывать на клиенте, вот пример. Удобно для валидации форм.
Большинство сейчас используют GET, и я сначала пытался достучаться GETом, пока не почитал документацию) Хотя это не так уж и важно.
Скудность API:
Нет возможность ограничить область поиска через параметры. (хотелось бы, например, ограничить только Москвой и МО). Добавлять 'Москва' в query — костыль.
Нет возможности указать типы мест, которые надо искать
Нет возможности ограничить кол-во объектов (хотя это уже можно сделать и на клиенте)
Нет возможности возврата объекта без родительских (Вводишь 'Мантулинская' и получаешь 'ул. Мантулинская', а не 'Россия, г. Москва, ул. Мантулинская'
Хотя лично мне, как и многим это всё не надо, ну кроме области поиска.
Типы: Области, города, улицы, номера домов.
Да, я помню этот пост, и понимаю, что вы против разделения формы адреса на несколько по компонентам. Но некоторым это необходимо.
К тому же иногда требуется, например, только город.
Спасибо за статью! Видно, что проделана большая работа!
Хотелось бы отметить, что подсказки дадата — это большее, чем просто ввод адреса. Уже сейчас для введенного адреса можно получить площадь квартиры и индекс, а в будущем будут еще геокоординаты, станции метро и прочая полезная информация об адресе.
Это, к сожалению, пока через одно место сделано — нужно дернуть API dadata dadata.ru/api и передать ему адрес, тогда вернется площадь квартиры
В апреле сделаем все в рамках текущего API
Только что заметил странное поведение Google Place Autocomplete — поиск по России и вне ее происходит по-разному:
1) Ищем по России. Например, «Нижний Новгород».
Результат — «Россия, Нижегородская область, Нижний Новгород», порядок такой: Страна, Регион, Город
2) Ищем вне России, «Атырау»
Результат — «Атырау, Атырауская, Казахстан», то есть порядок другой: «Город, Регион, Страна»
3) Пробуем еще вне России, «Киев»
«Киев, город Киев, Украина»
Баг это или нет, не понятно, пока нагуглить на эту тему не получилось.
Возможно, связано с текущей локацией — откуда идет запрос. Но имхо порядок должен быть всегда одним и тем же.
Сравнение сервисов для автодополнения адресов в форме