Умный поиск

Поиск по характеристикам товара: находить по параметру, а не по названию

Как сделать так, чтобы «230 мм» и «9 л.с.» находили товар, даже когда этих значений нет в названии, и что для этого должно быть в фиде.

Филимонов Иван3 мин чтения
Интернет-магазин на экране ноутбука, руки на клавиатуре
Фото: Shoper / Unsplash

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

Откуда берутся характеристики

Из товарного фида. В YML это блоки param — пары «имя свойства — значение»:

<param name="Диаметр диска">230 мм</param>
<param name="Мощность">2200 Вт</param>
<param name="Напряжение">220 В</param>

В CommerceML — развёрнутые свойства с типами и справочниками значений.

Всё, что не попало в фид, для поиска не существует. Это самая частая причина, по которой «поиск по характеристикам не работает»: алгоритм в порядке, искать нечего.

Что нужно сделать со значениями

Взять их как есть недостаточно — с ними нужно поработать.

Разделить число и единицу

«230 мм» — это число 230 и единица «мм». Разделение даёт возможность искать по диапазону: «от 200 до 250» найдёт и 230, и 220, чего сравнение строк не сделает никогда.

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

В одном каталоге встречаются «1200 Вт», «1,2 кВт» и «1200W». Это одно значение, записанное трижды. Без приведения:

  • фильтр показывает три отдельных значения вместо одного;
  • поиск по «1,2 кВт» не находит товары, где записано «1200 Вт»;
  • сравнение товаров между собой невозможно.

Приведение делается по таблице: кВт → Вт, л.с. → Вт, см → мм и так далее.

Разобраться с десятичным разделителем

«2.5» и «2,5» — одно число. В российских фидах встречаются оба написания, иногда в одном файле.

Отбросить мусорные свойства

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

Как это работает в поиске

После обработки значения характеристик индексируются наравне с названием, и запрос может содержать их в любом виде:

Запрос Что находит
диск 230 отрезные диски диаметром 230 мм
двигатель 9 л.с. двигатели мощностью около 6,7 кВт
кабель 3х2.5 кабель с соответствующим сечением
перфоратор 800 перфораторы мощностью 800 Вт

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

Связь с фильтрами и подбором

Заполненные характеристики — общая основа сразу для трёх вещей:

  1. Поиск по параметру — то, о чём эта статья.
  2. Фасетные фильтры — значения берутся оттуда же.
  3. Подбор аналогов по заявкам — сравнение товаров идёт по числам, а не по похожести названий.

Поэтому работа по заполнению свойств окупается не один раз. Это же объясняет, почему её стоит делать до внедрения любого из трёх, а не после.

Что делать, если свойства не заполнены

Реальная ситуация большинства каталогов: свойства есть у части позиций, у остальных пусто.

Варианты по возрастанию усилий:

  • Извлечь из названия. «УШМ 125мм 1200Вт» содержит два параметра прямо в тексте. Это даёт быстрый прирост покрытия по ходовым категориям.
  • Собрать со страниц товаров. У многих магазинов характеристики есть на сайте, но не попадают в выгрузку — таблицу свойств можно прочитать со страницы карточки.
  • Заполнить вручную для ключевых категорий. Долго, но для нескольких сотен ходовых позиций оправдано.

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

Коротко

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

Вопросы по теме статьи

Что нужно, чтобы поиск находил товар по характеристике?

Заполненные свойства в товарном фиде. Значения из блоков param индексируются наравне с названием, поэтому «230 мм» находит диски нужного диаметра, даже если в названии указан только артикул.

Как быть с разными единицами измерения?

Приводить к одной. «6,7 кВт» и «9 л.с.» описывают близкую мощность; без нормализации поиск считает их несвязанными значениями и половину товаров не найдёт.

Что делать, если характеристики не заполнены?

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

Умный поиск по каталогу товаров для интернет-магазина

Поиск, который переживает опечатки, чужую раскладку и запрос по характеристикам. Три канала поиска сразу, живые фильтры, менее 50 мс на каталоге 100 000+ товаров.

Читайте дальше