0
Not a bug

Совместное использование "count" и "location"

malikov 3 years ago updated 3 years ago 6

Описание про "уверенность" системы при count=1 прочитал.

Почему при

{

"query": "Пермский край, г Пермь, ул Белозерская, д 3 ",
"count": 1

}

система "уверена" в адресе и выдает результат

, а при:

{

"query": "д 3",
"count": 1,
"locations": [
{
"street_fias_id": "52af30c9-9801-44b7-be6a-ee93446618c9"
}
],
"from_bound": {
"value": "house"
}

}

система "не уверена" и выдает пустой ответ.


Контекст: передаем данные об адресе с сайта в 1С и на стороне 1С проверяю есть ли данный адрес в системе.

Проверку на fias_level планирую сделать.

Answer

Answer
Not a bug

Александр,


дело в том, что запрос c count = 1 выполняется для получения дополнительной информации по адресу. Он эквивалентен выбору конкретной Подсказки в jQuery-плагине. Ограничения выборки подсказок для него не требуется, поэтому при count = 1 нужно отправлять запрос с полным адресом (взять значение из unrestricted_value выбранной подсказки):

{"query": "Пермский край, г Пермь, ул Белозерская, д 3 ","count": 1}

Answer
Not a bug

Александр,


дело в том, что запрос c count = 1 выполняется для получения дополнительной информации по адресу. Он эквивалентен выбору конкретной Подсказки в jQuery-плагине. Ограничения выборки подсказок для него не требуется, поэтому при count = 1 нужно отправлять запрос с полным адресом (взять значение из unrestricted_value выбранной подсказки):

{"query": "Пермский край, г Пермь, ул Белозерская, д 3 ","count": 1}

"query": "Пермский край, г Пермь, ул Белозерская, д 3 "

и

"query": "д 3",
"locations": [{
    "street_fias_id": "52af30c9-9801-44b7-be6a-ee93446618c9"
    }],
"from_bound": {"value": "house"}

на Ваш взгляд не эквивалентны?


Если подставить "query": "д 32", без count, то выводится одна запись с гео.


Я работаю с API, вопрос по нему, запрос без локации был взят из jQuery реализации.

Я активно использую гранулярные подсказки:

https://confluence.hflabs.ru/pages/viewpage.action?pageId=466681932

Непонятна "уверенность" алгоритма, при том что на улице есть еще несколько 30-х домов.

Про unrestricted_value понятно, но гранулы начал применять из за того что "парсер" с вашей стороны неточно разбирал Лихачевские переулки в г. Москва с домами и корпусами.

Запросы из примера не эквивалентны, т.к. первый запрашивает д 3 (после номера стоит пробел), а во втором запросе осуществляется поиск всех домов, начинающихся с 3.


Идея какая, если запрашивается конкретный дом, подсказки вернут его уже с доп.инфо, если под запрос подходит несколько вариантов, то вернется основная информация, а дополнительная будет только после выбора подсказки. Поэтому при запросе д 32 без count приходит одна запись с геокоординатами.

Пришлите, пожалуйста, пример запроса с Лихаческими переулками. Посмотрим, в чем дело.

Нормальная, недокументированная фича, задокументируйте пожалуйста.

Получается count=1 ставить необязательно, просто проверю количество записей в ответе. С location отрабатывает нормально.


С Лихачевскими переулками протестирую, думаю будет норм, проблема была в том что при сборе строки запроса "Лихачевский 3-й, д 2 " он мог выдать и адреса по ""Лихачевский 2-й", а этого в списке выбора поля ввода номера дома не видно. Проблему решил с помощью location.

Возможно ошибки были из за того что строку собирал без разделителей "," , проверю.


Благодарю за информацию.

Александр, уточните, пожалуйста, вы используете подсказки только для номеров домов? Откуда появляется информация об улице?

В типовой 1С УТ 10 используется набор полей, по структуре похожих на https://dadata.ru/suggestions/#address-granular.

1. При вводе нового адреса последовательно заполняются поля с использованием подсказок, с сохранением в кеше структуры _fias_id.

2. С сайта приходит информация о адресе, транслируется ваша структура, которую нужно проверить, так же ориентир на street_fias_id + номер дома строения.