медиа про еком + ии
Гайд · Поиск по каталогу

ИИ-поиск магазина: готовый набор для приёмки

Коротко

  • Сначала запишите, какие товары поиск вправе вернуть на каждый запрос, и только потом смотрите выдачу.
  • Ниже — учебный каталог из 12 термокружек, 14 запросов с допустимыми артикулами и заполненный журнал, который можно взять за основу.
  • Это подготовка к приёмке: ответы в примере придуманы, работа SearchBooster или другого поисковика здесь не проверяется.

Редакция Кометы · опубликовано

Проверено: 17.10.2026

Что подготовить до начала

Нужны редактор таблиц или текстовый редактор и Python 3 для воспроизведения упражнения. Скачайте учебный набор и распакуйте в отдельную папку. Внутри — каталог, запросы, ожидания, программа проверки и журнал. Для этого этапа не нужны аккаунт поисковика, ключи API, платный тариф или рабочая выгрузка магазина.

Заложите час на разбор и замену примеров своими товарами. Это ориентир для планирования, не измеренное время внедрения. При условной стоимости часа сотрудника 1 000 ₽ подготовка обойдётся в 1 000 ₽: 1 час × 1 000 ₽. Вызовы сервиса в этот расчёт не входят; запросите у поставщика отдельную оценку интеграции и последующих прогонов.

Набор подходит руководителю интернет-магазина и разработчику, которые договариваются о требованиях к поиску. Он не заменит проверку многомиллионного каталога, нагрузки и скорости обновления остатков. Если задача — сначала выбрать продукт, начните с карточки SearchBooster или anyQuery: здесь нет рейтинга поставщиков.

Шаг 1. Сохраните каталог и правила

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

Скопируйте каталог в таблицу. Все строки ниже придуманы редакцией; цены — рубли, объём — миллилитры, остатки — штуки. Название каждого товара — «Учебная термокружка» с артикулом из первой колонки.

Артикул Материал Объём, мл Цвет Ручка Цена, ₽ Москва Казань
K01 Сталь 500 Чёрный Нет 1490 5 0
K02 Сталь 500 Белый Да 1790 0 4
K03 Пластик 350 Чёрный Нет 690 10 10
K04 Стекло 400 Прозрачный Да 1190 2 1
K05 Сталь 750 Чёрный Нет 2490 3 2
K06 Сталь 500 Белый Нет 1990 2 5
K07 Пластик 500 Белый Да 990 0 8
K08 Сталь 350 Красный Нет 1290 7 0
K09 Стекло 500 Чёрный Нет 1590 0 0
K10 Сталь 500 Чёрный Неизвестно 1390 1 1
K11 Сталь 750 Белый Да 2990 0 3
K12 Пластик 350 Белый Нет 590 6 0

До запросов запишите правила: город обязателен; товар с ценой ровно на указанном пределе подходит; все ограничения действуют одновременно. «Без ручки» требует известного значения «нет»: неизвестная характеристика у K10 не подходит. Если подходящих товаров нет, поиск сообщает об этом; предложение расширить бюджет должно быть отдельным, с согласия покупателя.

На выходе: один снимок каталога и письменные правила. Не меняйте их после просмотра ответов ради красивого результата. В своём каталоге добавьте разные региональные цены: учебная таблица проверяет различие остатков, но не различие цен между городами.

Шаг 2. Задайте передачу региона в фид и запрос

Это отдельная проверка входных данных, до оценки смысла запроса. Например, документация YML SearchBooster требует при использовании region передавать наличие, цену и остатки внутри соответствующего регионального блока; без region эти параметры находятся в offer. Остаток count при региональной структуре также помещают в region.

Для K01 задайте такое учебное соответствие:

Город ID региона Цена, ₽ Наличие Остаток, шт.
Москва msk 1490 true 5
Казань kzn 1490 false 0

Идентификаторы msk и kzn здесь назначили мы, их нужно согласовать с собственной интеграцией. Не оставляйте цену от одного города рядом с наличием другого.

В описании API поиска SearchBooster у метода GET /api/{uuid}/search/ есть необязательный строковый параметр regionId. Необязательный параметр сам по себе не объясняет, какой город будет выбран без него. Для учебного магазина правило строже: сначала выбрать город; поведение поставщика без региона нужно отдельно выяснить и проверить, а не считать Москвой по умолчанию.

Сверьте один артикул по цепочке: исходный каталог → сформированный фид → загруженный документ товара → параметры запроса → карточка в ответе. В журнале сохраните время снимка, артикул, город, цену и наличие на каждом звене. В нашем локальном примере копия импортированного K01 намеренно получила нулевой московский остаток вместо пяти: товар исчез ещё до ранжирования.

На выходе: таблица соответствий городов и полей плюс список того, что нужно подтвердить у поставщика. Сам приёмочный набор можно подготовить без подключения; загруженный документ и реальную цепочку запросов вы проверите уже на стенде поставщика.

Шаг 3. Назовите допустимые товары до первого ответа

Ниже — весь учебный список ожиданий. Для каждой строки любой артикул, которого нет в колонке «Допустимо», запрещён. При пустом списке запрещены все товары из каталога. Это проверка состава первых пяти результатов, не их порядка: все допустимые товары должны в них попасть, посторонние — нет.

№ Запрос покупателя Город Допустимо Что проверяем
Q01 K01 Москва K01 Точный артикул
Q02 термокрушка белая до 1000 рублей Москва K12 Опечатка не отменяет бюджет
Q03 белая термокружка до 1990 включительно Казань K02, K06, K07 Цена на границе допустима
Q04 термокружка не пластиковая до 1600 Москва K01, K04, K08, K10 Отрицание материала
Q05 чёрная без ручки до 1600 Москва K01, K03 Неизвестно — не «нет»
Q06 белая пластиковая Казань K07 Казанский остаток
Q07 белая пластиковая Москва K12 Тот же запрос, другой город
Q08 стальная 750 мл до 2500 Казань K05 Объём и бюджет вместе
Q09 стальная 750 мл до 2000 Казань Нет товаров Не расширять бюджет молча
Q10 стеклянная 500 мл Москва Нет товаров K09 нет в наличии
Q11 красная без ручки Казань Нет товаров Московский остаток не подходит
Q12 чёрная стальная до 1500 Москва K01, K10 Ручку здесь не спрашивали
Q13 термокружка до 590 включительно Москва K12 Нижняя ценовая граница
Q14 белая термокружка Не выбран Нет выдачи: спросить город Не путать уточнение с отсутствием товара

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

На выходе: сохранённые ожидания, независимые от будущих ответов. В архиве есть отдельная таблица ожиданий и список запросов; запреты развёрнуты для каждой строки.

Шаг 4. Заполните журнал и найдите нарушение

В таблице ниже только придуманные учебные ответы, а не выдача сервиса. Мы намеренно внесли ошибки, чтобы показать, как читать журнал. Полный запрос и ожидаемые товары берите из предыдущей таблицы.

№ Учебный ответ: артикулы или действие Итог Причина
Q01 K01 Прошёл Точное совпадение
Q02 K12 Прошёл Цвет, бюджет и город соблюдены
Q03 K02, K06, K07, K11 Не прошёл K11 дороже 1990 ₽
Q04 K01, K04, K08, K10 Прошёл Пластика нет, бюджет соблюдён
Q05 K01, K03, K10 Не прошёл У K10 ручка неизвестна
Q06 K07, K12 Не прошёл K12 нет в Казани
Q07 K12 Прошёл Московский товар доступен
Q08 K05 Прошёл Объём и цена подходят
Q09 K05 Не прошёл Бюджет самовольно расширен
Q10 K09 Не прошёл Товара нет в наличии
Q11 Сообщить: подходящих товаров нет Прошёл Красной кружки нет в Казани
Q12 K01, K10 Прошёл Оба товара подходят
Q13 K12 Прошёл Цена равна пределу
Q14 Сообщить: подходящих товаров нет Не прошёл Нужен вопрос о городе

Программа сравнила заданные ответы с правилами: прошли 8 из 14 запросов, не прошли 6 из 14. Ошибки перечислены в последней колонке.

Не угадывайте причину по одному плохому ответу. Идите по слоям:

  1. Неверная цена или остаток уже в исходном каталоге. Исправьте источник данных и создайте новый снимок. Ожидаемый результат — правильное значение до выгрузки.
  2. В каталоге верно, в фиде или загруженном документе неверно. Проверьте преобразование полей, регион и обновление. Ожидаемый результат — совпадение значений во всех трёх местах. У SearchBooster переиндексация из фида перезаписывает изменения, внесённые через API: правку надо сохранять в источнике, который переживёт следующую загрузку.
  3. Документ верен, но запрос потерял бюджет, отрицание или город. Сверьте разобранные условия и фильтры с запросом покупателя. Ожидаемый результат — ограничения не исчезли по дороге.
  4. Кандидаты допустимы, но нужный товар ниже согласованного места. Только теперь разбирайте отбор кандидатов и ранжирование. Ожидаемый результат — обязательный товар попал в оговорённую часть выдачи.

Без снимков этих слоёв в журнале пишите «причина не установлена», а не «модель плохо ранжирует».

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

Шаг 5. Предусмотрите запасной поиск без ИИ

Договоритесь о поведении при тайм-ауте, недоступности ИИ или некорректном ответе. Наше требование: перейти на обычный поиск по артикулу и словам с теми же жёсткими ограничениями города, бюджета и наличия. Если запрос не удалось разобрать, покажите обычную форму и фильтры; не угадывайте отсутствующее условие. Если актуальность данных неизвестна, не обещайте покупателю наличие.

В локальном упражнении запасной путь получает уже разобранные условия. Он проверяет фильтры, но не распознаёт живую речь, не исправляет опечатки и не подключён к магазину. Для каждого запроса мы подставили три учебных отказа: тайм-аут, недоступность и неверный ответ. Все 42 сочетания сохранили ожидаемые ограничения; отдельная проверка устаревшего снимка запретила выдачу вместо обещания наличия.

На реальном стенде отключите ИИ-ветку и выполните свои запросы через интерфейс магазина. Сравните цену, город и наличие с исходным каталогом; измерьте время ответа и убедитесь, что покупатель может продолжить поиск. Предел задержки и допустимый возраст остатков назначьте до прогона под свой магазин.

На выходе: заранее согласованный запасной сценарий. Успех локальной модели не доказывает, что переключение работает у поставщика.

Как воспроизвести учебный результат

  1. Откройте терминал в распакованной папке. На компьютере должен быть установлен Python 3; программа использует только стандартную библиотеку, к внешним API не обращается.
  2. Запустите python3 run.py. В терминале появится сводка, а в папке — журналы и страница с результатом.
  3. Откройте exercise.html в браузере. Вы увидите таблицу сравнения ответов и ожиданий.

Ожидаемый результат: программа подтвердила, что исходные файлы не изменились, и заново получила те же допустимые товары; в первом журнале 8 успешных и 6 неуспешных строк из 14. В исправленном учебном журнале проходят все 14 строк. В запасном пути проходят 42 сочетания запросов и отказов из 42.

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

Как мы проверяли

Проверено: открытая документация SearchBooster и локальное упражнение v1 на Python 3.14.4; интерфейс сервиса не использовался, версия веб-документации не указана.

Редакция Кометы подготовила каталог и правила, сохранила ожидания до ответов, выполнила локальную программу и получила журналы до и после учебной правки. Дата указана в начале страницы, среда — в начале раздела; запись упражнения — data/tests/catalog-search-acceptance-v1, её входы и результаты доступны в архиве. Страницы документации открыли заново и сверили по содержанию.

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

Источники

Сообщить об ошибке