Когда Подсказки обращаются в Фактор:

Ответ от Фактора Подсказки преобразуют в свой формат и возвращают ответ в том же виде, как будто бы адрес был найден в поисковом индексе.

Сценарии обращения к Фактору

Вызван метод suggest с параметром count > 1, Подсказки не нашли у себя подходящих под запрос адресов

В каких случаях это обычно происходит:

В этом сценарии Подсказки игнорируют код качества адреса от Фактора и всегда возвращают адрес. Предполагается, что человек посмотрит на подсказку и решит: это то что надо или нет.

Вызван метод suggest с параметром count > 1, Подсказки нашли подходящие адреса, но кажется, что чего-то не хватает

Это специфическая ситуация. Обычно возникает, когда в запросе указан дом и квартира, Подсказки что-то нашли, но ответ не похож на правильный:

москва магнитогорская 23 2
- г Москва, ул Магнитогорская, д 23
- г Москва, ул Магнитогорская, д 23 стр 1

В таком случае Подсказки дополнительно прогоняют запрос через Фактор и подмешивают в выдачу результат, причем ставят на первое место:

москва магнитогорская 23 2
- г Москва, ул Магнитогорская, д 23, кв 2
- г Москва, ул Магнитогорская, д 23
- г Москва, ул Магнитогорская, д 23 стр 1


Вызван метод suggest с параметром count > 1, Подсказки нашли единственный адрес

Если по запросу найден только один адрес, Подсказки сразу получают по нему всю доступную информацию из Фактора (стоимость квартиры и тому подобное) и возвращают обогащенный адрес.

Вызван метод suggest с параметром count = 1

Предполагается, что API-клиент делает запрос к Подсказкам с count = 1 только тогда, когда человек выбрал конкретную подсказку из списка. Поэтому такие запросы Подсказки сразу пробрасывают в Фактор, чтобы получить всю информацию по адресу.

Если Фактор вернёт плохой код качества, Подсказки отбросят результат и вернут пустой ответ. Так сделано, чтобы уже выбранный человеком хороший адрес внезапно не испортился. Чтобы не было ситуации, когда человек выбрал «г Москва, ул Сухонская, д 54/21», а он превратился в «г Москва, ул Сухонская, д 54, кв 21» из-за того, что Фактор плохо разобрал адрес.

Вызван метод findById, Подсказки нашли адрес

По запросу может быть найден только один адрес, так что Подсказки сразу получают по нему всю доступную информацию из Фактора и возвращают обогащенный адрес.

Вызван метод iplocate, Подсказки нашли адрес

По запросу может быть найден только один адрес, так что Подсказки сразу получают по нему всю доступную информацию из Фактора и возвращают обогащенный адрес.

Особенности интеграции с Фактором

Подсказки дописывают в адрес родителя, если есть ограничение по родителю (locations)

Пример: фильтрация по Самаре. Запрос "авиационная". В Фактор уходит: "Самарская обл, г Самара, авиационная".
Работает только с одним родителем. Если указано несколько, то родитель при запросе в фактор не будет дописан (уйдёт просто «авиационная»).

Если нет ограничения по родителю, но есть приоритет города (locations_boost), то в Фактор уйдут 2 адреса в одном запросе

Как получаются эти два адреса:

В результате подсказки могут вернуть 2 варианта, порядок будет зависеть от кодов качества — сначала выводится адрес с хорошим кодом качества. Если коды качества одинаковые, то порядок ровно такой, как в запросах: сначала без дописывания родителя, потом с дописыванием.

Если Фактор на оба адреса вернул одинаковый результат, то подсказка будет одна — одинаковые варианты схлопнутся.