garakh/kladrapi

Поиск по индексу

vzhilov opened this issue · 12 comments

Скажите, насколько было бы сложно сделать поиск по индексу? Для завершения элемента формы адресов на сайте очень нужно. Я видел, что у Вас стоит это в планах. Будет ли сколько-то стоить это ускорить?)

Технически сделать «в лоб» несложно, но проблема в том, что не у всех объектов есть индексы, поэтому сперва нам надо корректно обработать базу и собрать индексы (например, у улице может не быть индекса, в этом случае нам надо собрать все индексы домов этой улицы и сформировать массив индексов данной улицы).

Не могли бы Вы более подробно описать Ваш кейс — «Для завершения элемента формы адресов на сайте очень нужно.». Т.е. индекс планируете вводить после ввода улицы и тп или сперва индекс и ограничить выбора остальных объектов?

Наша база используется для сбора адресов, чтобы в дальнейшем делать почтовые рассылки (газету по списку подписчиков, рекламные материалы и т.д.). Я пытаюсь сделать ввод адресов максимально удобным. Иногда известен адрес, но индекс не известен и его приходится искать. Как это реализовать с помощью вашего сервиса, я примерно представляю и, вероятно, смогу реализовать. Но когда известен весь адрес, хочется ускорить ввод, типа набрал индекс, а город и улица сами подставились, чтобы не вбивать. Если на один индекс может быть две улицы, я бы смог в своем Select2 выдавать возможные варианты улиц, и таким же образом я смогу сделать выбор по номерам домов и т.д. Но все это возможно только если можно искать объекты по индексу, так же как у Вас это реализовано по улицам, городам и т.д. Т.е. в Вашем вопросе - это последний вариант - когда индекс введен и нужно ограничить выбор остальных объектов.

Проблема в том, что люди могут использовать неверные индексы. Например, в г. Архангельск индекс 163000 привязан к главпочтамту. Недалеко от него есть улица Володарского, которые дома которой официально привязаны к индексу 163061. Но почта все равно приходит на главпочтамт, поэтому многие указывают просто 163000.

Так вот, когда такой человек увидит Вашу форму, он по привычке введет 163000, а по этому индексу своего адреса он не найдет.

Более того, многие жители не парятся индексами и указывают всегда 163000, чтоб получить свою посылку на главпочтамте (либо главпочтамт перешлет посылку в районный почтамт по текущему адресу). Конечно почта идет дольше, но далеко не все знают зачем надо указывать верный индекс.

Собственно именно по этим причинам мы еще не начали делать поиск по индексу.

Да, это, конечно, трудный вопрос. Но может быть тогда можно сделать хотя бы определение не до улицы, а до города. Такая функция была бы полезна, чтобы можно было по индексу определять регион и хотя бы город. Уже меньше вбивать. Да и затем можно делать выборки регионов и городов по индексам, если нужно сделать рассылку только по подписчикам конкретных городов, например.

Постараемся на днях реализовать поиск города и региона по индексу

Как дела по этому вопросу? У меня тоже есть потребность поиска по индексу.

в процессе

Часто люди пишут ТОЛЬКО индекс вместо населенного пункта. Поэтому добавлю свой голос для веса необходимости функционала поиска населенного пункта по почтовому индексу. Мне кажется, осуществлять поиск до улицы - опция, которая не всегда может отработать.

Очень нужен поиск по индексу.

Сделали. Пока в документации не описано.
Например, работает так:
http://kladr-api.ru/api.php?query=&zip=163000&contentType=building&withParent=1&limit=2&token=51dfe5d42fb2b43e3300006e&key=86a2c2a06f1b2451a87d05512cc2c3edfdf41969

работает по точному совпадению, только с building (т.к. все индексы есть только у них).
Т.е. указываем индекс — получаем номера домов.
Если надо получить сведения о городе и тп, то указываем withParent=1 и limit=1 и смотреть массив parents

Прекрасно работает, спасибо!