Поиск по каталогу: обычный, полнотекстовый и векторный — publi.ru

Поиск по каталогу: обычный, полнотекстовый и векторный

8 мин чтения · разбор · для опытных · обновлено 2026-09-02

Поиск по каталогу бывает трёх видов, и они отличаются тем, по чему сравнивают запрос с товаром. Обычный ищет вхождение подстроки, полнотекстовый — совпадение слов с учётом их форм, векторный — близость по смыслу. Разберём, как каждый устроен внутри, где ломается и почему в живом магазине они обычно стоят слоями, а не по отдельности.

Обычный поиск: совпадение подстроки

Самый простой вариант. Запрос покупателя подставляется в условие «название содержит эту строку», база возвращает подходящие строки.

Работает это ровно так, как звучит. Запрос «стол» найдёт «Стол письменный» и «Столешница». Запрос «письменный стол» не найдёт ничего, если товар называется «Стол письменный дубовый»: порядок слов другой, подстрока не совпала.

Что он умеет. Быстро искать по артикулу и точному названию. Не требовать ничего, кроме самой базы. Работать на любом объёме каталога без дополнительных сервисов.

Чего не умеет. Не понимает словоформы: «столы» и «стола» для него разные строки. Не прощает опечатки. Не умеет ранжировать — все найденные одинаково хороши, порядок случайный или по дате.

Когда достаточно. Каталог до нескольких сотен позиций, покупатели ищут по названию или артикулу, а основной способ навигации — категории и фильтры.

Полнотекстовый поиск: слова и их формы

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

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

Что появляется. Словоформы: «столы», «столов», «столу» приводят к одному и тому же. Ранжирование по релевантности. Поиск сразу по нескольким полям с разным весом. Обычно — терпимость к опечаткам в пределах одной-двух букв.

Чего всё ещё нет. Понимания смысла. Если покупатель ищет «куда положить ноутбук на кровати», а товар называется «Столик для завтрака», не совпадёт ни одно слово, и выдача будет пустой.

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

Векторный поиск: близость по смыслу

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

Совпадение слов здесь не требуется вообще. Запрос «чем занять четырёхлетку, который не сидит на месте» найдёт товар, в описании которого нет ни одного из этих слов, если по смыслу он подходит.

Что появляется. Поиск по описанию задачи, а не по названию товара. Устойчивость к любым формулировкам. Работа с синонимами без ручного словаря синонимов.

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

Что нужно для работы. Модель, которая считает векторы, хранилище векторов и процесс пересчёта при изменении каталога. Это заметно дороже полнотекстового поиска и по разработке, и по эксплуатации.

В платформе Papa BU векторный поиск стоит не в витрине магазина, а внутри работы с объявлениями: там задача именно в том, чтобы находить похожее по смыслу, а не по совпадению слов.

Как они уживаются вместе

В живом магазине это не выбор одного из трёх, а порядок обработки запроса.

  1. Запрос похож на артикул или код — отдаём обычному поиску, ищем точное совпадение.
  2. Запрос из одного-трёх слов, похожих на название товара, — работает полнотекстовый.
  3. Полнотекстовый ничего не нашёл или запрос длинный и описательный — подключается векторный.
  4. Результаты показываются одним списком, точные совпадения всегда выше похожих.

Такая схема даёт предсказуемость там, где она нужна, и мягкость там, где покупатель не знает нужного слова.

Что важнее выбора движка

Три вещи, которые влияют на качество поиска сильнее, чем сама технология.

Что попадает в индекс. Если в поиск отдаётся только название товара, ни один движок не спасёт. В индекс должны идти название, описание, свойства и категория.

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

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

Подсказки при вводе

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

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

Здесь же имеет смысл показывать, что найдено ноль результатов, — до того, как человек нажмёт ввод.

Кому какой поиск

До 200–300 позиций. Обычный поиск по названию плюс нормальные категории. Ничего сложнее не окупится.

Тысячи позиций, покупатели знают термины. Полнотекстовый. Это рабочая лошадь для большинства магазинов, и на ней имеет смысл остановиться.

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

Каталог с ошибками в свойствах. Сначала данные. Поиск по кривому индексу выдаёт кривые результаты независимо от технологии, и это не чинится настройками.

Коротко

Обычный поиск сравнивает подстроки, полнотекстовый — слова и их формы с ранжированием, векторный — смысл. В магазине они обычно стоят слоями: точное отдаём первому, обычные запросы второму, описательные третьему. Качество выдачи при этом сильнее зависит от того, что вы положили в индекс и что показываете при нуле результатов, чем от выбранного движка. И до нескольких сотен позиций всё это лишнее — там достаточно категорий и простого поиска по названию.

Расскажите, что нужно — посмотрим и скажем честно

Первый разговор — разбор задачи: нужна ли вам система или хватит одной страницы. Без обязательств и без счёта.

или оставьте номер — перезвоним

Перезваниваем в рабочее время. Ничего не рассылаем.

Оператор персональных данных — ИП Постнов Артём Сергеевич, ИНН 772610459593.

Частые вопросы

Можно ли обойтись поиском, встроенным в базу данных?

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

Векторный поиск заменяет обычный?

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

Что делать с пустой выдачей поиска?

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

Помогла статья?

Те, что не помогают, мы переписываем — по этой кнопке и решаем, какие именно.

Ещё по теме