Comments 56
У dadata обычная база ФИАС. Из плюсов — пока бесплатные, быстро работает. Из минусов — не проверяются номера домов по той-же базе фиас-а, не совсем корректно работает с длинными улицами и пр. мелкие неудобства.
У нас база КЛАДР, но разница невелика, на самом деле :-) А что не так с номерами домов и улиц — можете привести пример?
Ну значит понятно, почему вы не проверяете номера домов на реальное существование). Например, не существует адреса «2-й рощинский проезд, 301. Длинные улицы тоже определяете не очень хорошо (5-ая улица Ямского поля дом дом 5, строение 1).

Но вообще, уже начинаем интегрировать вас, лучше пока ничего не нашли…
«2-й рощинский проезд, 301» — так в подсказках и нет такого адреса. Вы, может быть, имеете в виду API стандартизации? Там мы действительно разрешаем отсутствующие в КЛАДР номера домов, так как что в КЛАДР, что в ФИАС есть далеко не все дома страны.

«5-ая улица Ямского поля дом дом 5, строение 1» — да, с такими улицами есть некоторые проблемы как раз в стандартизации, работаем над этим.
От всей команды «Кладра в облаке» скажу, что нам очень стыдно, что мы так безбожно затянули релиз поиска одной строкой. Ведь начали его делать уже более чем 4 месяца назад, а подготовленная база данных со всеми штуками и индексами давно уже на продакшене.
Плюс у нас в тесте пачка других фич, но финально дотестить, вылезать все моменты и тп, ну, кому я это рассказываю, вы сами все понимаете. Наши любимые пользователи, прошу простить и понять :) скоро все будет! :)
В опросе не звучало «бесплатный», поэтому отвечу: используем 2Гис. Гемороя тоже достаточно, бывает возвращает не релевантные результаты, или дубликаты одного и того же адреса. Ну и платный он, к тому же не так уж и дешево.

В связи с этим, сделали следующую схему: изначально поиск проходит по нашей базе данных (импортировано около 60 000+ адресов Питера, поиск только по этому городу необходим), все индексируется в ElasticSearch, поэтому скорость хорошая. Далее, если адрес не найден, производится попытка получения у 2Гис. В принципе, работает неплохо.
Это было требование заказчика, так что про приемущсество ничего не могу сказать.
А ещё есть OpenStreetMap и Nominatim — адресный поиск для него. Правда, я не пробовал использовать его именно как источник вариантов для автодополнения, но это вполне возможно — Номинатим возвращает массив, содержащий до десяти подходящих результатов. Среди возвращаемого есть и адрес одной строкой.

Допустимая интенсивность использования, согласно Usage policy — не более одного запроса в секунду.
OSM кривоват немного.
Когда я сводил воедино КЛАДР и OSM только — Левенштейн и спасал.
Ну и не содержит он многие полезные данные (окато/октмо). Хотя дает для ОМК УМ, который даже не знаю где еще можно взять.
Каждый раз когда слышу про эти автокомплиты и кладры в облаке — совесть мучает.
Сам обладаю почти что самой полной базой данных, а АПИ не приделал (в том числе даже для себя)
При наличии терпения и свободного времени OSM вполне допиливается. Другой вопрос, найдутся ли терпение и время. И желание заодно.
Ок. Найдите мне все дороги в Москве.
Но нет. Никто не ставит эти зависимости. 99% обьектов не имеют указание вложености.
В своих проектах испольую базу ФИАС и самописное приложение django-fias
Это конечно не сервис, но вдруг кому пригодится.
ЗЫ
полнотекстовый поиск так же имеется
Спасибо за ссылку — посмотрю ваше приложение.
Некоторое время назад тоже конвертировал (для проекта на django) БД ФИАС из dbf в PostgreSQL, но не всю а только для нужного региона — взамен устаревшему КЛАДРу, который использовался для автодополнения улиц.
Хотел спросить — как вы обновляете БД — заново импортируете все с нуля, икрементно апдейты заливаете или еще как-то?
База-то очень большая.
Заранее спасибо!
Обновляется инкрементно, благо, налоговая соответствующее API предоставила.

База действительно большая (сейчас где-то 1 200 000 записей — это только адреса. домов вообще не считал сколько) и процесс обновления не особо оптимизирован — одно из обновлений весит около 500 мб (76 или 77 версия) в архиве — оно у меня пол дня обновлялось.
Очень приятно начинать день с таких хороших постов про свой сервис, спасибо большое за настроение:)
По поводу АПИ — мы активно работаем и развиваем его, скоро появится много нового как с точки зрения функционала, так и с точки зрения взаимодействия. Вдобавок, мы внимательно слушаем все отзывы, если хотите видеть что-то определённое — пишите!
В БД используется КЛАДР.
Всегда пожалуйста, тем более это я Вам должен говорить спасибо за хороший продукт.
Хочу видеть ограничение области поиска по области/городу. В идеале, чтобы можно было ограничить несколькими областями (например Москва/МО + Санкт-Петербург/Ленобласть)
Заинтриговал критерий
100%й uptime не обязателен

Что за сервис у вас такой?
99% уже не 100%, но считается нормой, так что я думаю имелось ввиду это.
Интернет магазин. Я думаю, Вы согласитесь, что автодополнение адреса в интернет магазине — вещь приятная, но вовсе необязательная. И если вдруг uptime будет процентов даже 95%, ничего страшного не произойдет, пользователь и сам введёт адрес.
Нет, не соглашусь.
Если по вине сервиса сорвется оформление, то уж лучше пусть не будет такого сервиса, чем 95% uptime.
99.5 — это еще можно пережить.
95%?
Т.е. вы считаете нормальным, что ваш интернет магазин не будет работать ежедневно 1 час и 12 минут?
Я же не про магазин, а про то, что автодоплнение может и не работать. Магазин будет работать.
Не очень понятно, почему искалось именно такое дополнение, которое может работать, а может и не работать. Не лучше сразу стремиться к тому, чтобы все работало без сбоев?
Потом, в случае отключения автозаполнения, нужно продумывать дублирующий интерфейс — опасный путь. На этапе оформления крайне желательно максимально упростить и обеспечить безотказность, иначе, велик риск потери клиента. А клиент, начавший оформление — это совсем не просто посетитель, он дорогого стоит.
primepix, у вас последняя версия базы ФИАС, как часто обновляете ее? Мы столкнулись что по КЛАДРу который на сайте ФНС и у вас в сервисе получается разный код КЛАДР.
не хватает параметра отсеивания устаревших адресов (с 01 на конце), можно конечно и самим отфильтровать, но приятно получить из коробки да и меньше таскать данных =)
Это было реализовано в последнем обновлении, так что сейчас это должно работать как вы описали.
При этом, точный запрос по коду даже устаревшему (с 01 и тп на конце) вернет данные об объекте, но поиск по названию их проигнорирует
В районе 20 февраля.
Напишите нам по почте или в личку — разберемся.
UFO landed and left these words here
Я использую плагин Lazarus Form Recovery в своём браузере. Он запоминает все формы на сайте, и, если что, их можно восстановить, нажав на этот анкх.
goooseman, спасибо за обзор! А можете пояснить свою мысль? Чем у DaData неочевиден POST и в чем скудность API? Мы будем рады сделать его более удобным :-)

Кстати, помимо подсказок у нас есть стандартизация и проверка телефонов и email. Ее тоже можно вызывать на клиенте, вот пример. Удобно для валидации форм.
Нет общественных мест (аэропорты, кафе, театры и т.д.). У Google Geocode они есть
Это сложно причислить к скудности API, скорее проблемы базы, которую мы используем. Но спасибо :-)
Большинство сейчас используют GET, и я сначала пытался достучаться GETом, пока не почитал документацию) Хотя это не так уж и важно.

Скудность API:
  • Нет возможность ограничить область поиска через параметры. (хотелось бы, например, ограничить только Москвой и МО). Добавлять 'Москва' в query — костыль.
  • Нет возможности указать типы мест, которые надо искать
  • Нет возможности ограничить кол-во объектов (хотя это уже можно сделать и на клиенте)
  • Нет возможности возврата объекта без родительских (Вводишь 'Мантулинская' и получаешь 'ул. Мантулинская', а не 'Россия, г. Москва, ул. Мантулинская'

Хотя лично мне, как и многим это всё не надо, ну кроме области поиска.
Ага, теперь понятно, спасибо.

Ограничение области поиска сделаем обязательно в ближайшие пару месяцев.

Объект без родительских удобно настраивать на клиенте, как мне кажется (пример есть на той же демо-странице).

Количество возвращаемых объектов — да, хорошая мысль, возможно, вынесем в API.

А типы мест — что это? Искать только города или только улицы?
Типы: Области, города, улицы, номера домов.
Да, я помню этот пост, и понимаю, что вы против разделения формы адреса на несколько по компонентам. Но некоторым это необходимо.

К тому же иногда требуется, например, только город.
Да, понял вас. Если поймем, что это сильно востребовано, то, конечно, сделаем.
Зато есть данные о водоёмах, трассах и даже заповедниках (только весьма странные)


Может кому и пригодится.
Спасибо за статью! Видно, что проделана большая работа!

Хотелось бы отметить, что подсказки дадата — это большее, чем просто ввод адреса. Уже сейчас для введенного адреса можно получить площадь квартиры и индекс, а в будущем будут еще геокоординаты, станции метро и прочая полезная информация об адресе.
Индекс я увидел, но где посмотреть данные о площади квартиры? Вроде есть поля settlement и settlement_type, но они пустые, какой бы я дом не ввел.
Это, к сожалению, пока через одно место сделано — нужно дернуть API dadata dadata.ru/api и передать ему адрес, тогда вернется площадь квартиры
В апреле сделаем все в рамках текущего API
Только что заметил странное поведение Google Place Autocomplete — поиск по России и вне ее происходит по-разному:
1) Ищем по России. Например, «Нижний Новгород».
Результат — «Россия, Нижегородская область, Нижний Новгород», порядок такой: Страна, Регион, Город
2) Ищем вне России, «Атырау»
Результат — «Атырау, Атырауская, Казахстан», то есть порядок другой: «Город, Регион, Страна»
3) Пробуем еще вне России, «Киев»
«Киев, город Киев, Украина»

Баг это или нет, не понятно, пока нагуглить на эту тему не получилось.
Возможно, связано с текущей локацией — откуда идет запрос. Но имхо порядок должен быть всегда одним и тем же.
Only those users with full accounts are able to leave comments. Log in, please.