# Поиск

Проверка инициализации SDK

Проверяйте флаг инициализации SDK, прежде чем делать запросы к API. Если SDK не инициализирован, то нет гарантии, что did и seance корректные и попытка отправить запрос может привести к ошибкам. А массовая история может привести к DDOS-атаке.

# Быстрый поиск

Как только приложение и SDK инициализированы, вы можете добавить обработчик ввода на поле поиска. С каждым изменением поискового запроса обращайтесь к API /search с type=instant_search. В ответе у вас будет сложная структура с подсказками, товарами, категориями, редиректами и другими секциями. Вы можете отобразить любые из секций, но рекомендуем использовать максимум возможностей для получения наилучшего пользовательского опыта.

Добавьте проверку пустого ввода: если пользователь очистил поисковую строку, такой запрос отправлять к нам не нужно, в ответ вы получите 400 Bad Request.

# Обработка переходов

# Полный поиск

Если пользователю недостаточно результатов, отображаемых в выдаче, он нажимает кнопку "Найти". В этот момент вы открываете экран полного поиска и делаете поисковый запрос к API (см. ниже).

# Переход по подсказке

Аналогичен переходу на полный поиск, но вместо того, что пользователь ввел в поле поимка, передается текст подсказки, на которую пользователь нажал.

# Поисковый редирект

Если маркетолог задал поисковый редирект для конкретного поискового запроса, введенного пользователем, то вместо перехода на полный поиск по нажатию "Найти", пользователя необходимо перевести по диплинку (для мобильных приложений) и ссылке (для сайтов), указанным в секции редиректа.

Если диплинк для мобильного приложения не задан, то нужно перевести пользователя в полный поиск.

# Переход в категорию

Если пользователь нажал на имя категории в результатах быстрого поиска, то необходимо:

  1. Перевести его на экран товарной категории
  2. Отследить переход с помощью трекинга события category с параметрами recommended_by=instant_search и recommender_code=поисковый_запрос - то, что было у пользователя в поле поиска в момент нажатия на название категории.

# Переход в товар

Если пользователь нажал на товар в результатах быстрого поиска, то необходимо:

  1. Перевести его на экран карточки товара
  2. Отследить переход с помощью трекинга события view с параметрами recommended_by=instant_search и recommender_code=поисковый_запрос - то, что было у пользователя в поле поиска в момент нажатия на название категории.

# Обработка ошибок быстрого поиска

Ошибка Что делать
SDK не инициализирован Не обращаться к API
Нет связи Не делать повторные попытки
4xx Не делать повторные попытки
500 Не делать повторные попытки
502 Не делать повторные попытки
504 Не делать повторные попытки

# Полный поиск

Когда пользователь оказался на экране полного поиска, необходимо выполнить поисковый запрос к API /search с type=full_search. В ответе у вас будет сложная структура с товарами и фильтрами.

Вы можете построить динамический фильтр для уточнения результатов выдачи по параметрам товаров. С каждым изменением фильтров (или по нажатии кнопки "Отфильтровать", если вы не хотите делать динамический фильтр) делайте повторный поисковый запрос, но уже с выбранными фильтрами.

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

Не запрашивайте больше 100 товаров за один раз, если хотите, чтобы поисковые запросы отрабатывали мгновенно. Лучше пользуйтесь параметрами offset и limit.

# Если вы не используете полный поиск сервиса

Если вы не хотите использовать наш полный поиск, в этом случае при попадании посетителя на результаты полного поиска вам необходимо передавать в API событие поискового запроса event=search с самим поисковым запросом, иначе статистика поиска будет работать некорректно.

# Трекинг нажатия на товар

После того как в полном поиске пользователь выбрал товар и попал в карточку товара, вам необходимо передать трекинг просмотра товара с параметрами recommended_by=instant_search и recommender_code=поисковый_запрос - то, что пользователь ввел в поисковый запрос, чтобы получить результат полного поиска.

# Ничего не найдено

Если полный поиск вернул пустой ответ, можно попробовать отобразить блок рекомендаций "Покупатели, искавшие это, купили эти товары".

Не стоит выводить этот блок вверху результатов поиска, если товары найдены, т.к. в нем могут быть товары, не имеющие прямого отношения к поисковому запросу.

# Обработка ошибок полного поиска

Ошибка Что делать
SDK не инициализирован Не обращаться к API
Нет связи Повторить попытку с интервалом в 5 секунд не более 3 раз
4xx Не делать повторные попытки
500 Повторить попытку с интервалом в 5 секунд не более 3 раз
502 Не делать повторные попытки
504 Не делать повторные попытки