У вас маркетплейс с каталогом в 250 000 товаров. Клиент ищет «дрель аккумуляторная», а вы показываете результаты только по точному совпадению «дрель аккумуляторная». Если он опечатается — «дрель акумуляторная» — ничего не найдёт. Если напишет «аккумуляторная дрель» — порядок слов другой — тоже пусто. Клиент уходит к конкуренту, у которого поиск умнее.
Мы решали эту задачу для маркетплейса запчастей спецтехники (250 000 позиций). Настройка поиска заняла 3 дня, и теперь поиск понимает опечатки, словоформы (дрель, дрели, дрелей) и нечувствителен к порядку слов. Расскажу, как сделать такой поиск на Falcon Space.
Многие самодельные каталоги используют конструкцию WHERE name LIKE '%дрель%'. Проблемы:
В MS SQL Server есть полнотекстовый поиск (Full-Text Search), который решает эти проблемы. Мы его и использовали.
Шаг 1. Включить полнотекстовую индексацию для таблицы товаров. В административном интерфейсе Falcon Space указываете, какие поля индексировать (например, name, description). Система сама создаёт индекс.
Шаг 2. На странице каталога добавить поисковую строку. Обычное поле ввода и кнопка «Найти».
Шаг 3. Написать SQL-процедуру поиска. Используем функцию CONTAINSTABLE:
CREATE PROCEDURE [app].[search_products]
@keywords nvarchar(100)
AS
BEGIN
SELECT p.product_id, p.name, p.price, p.image, ft.RANK
FROM products p
INNER JOIN CONTAINSTABLE(products, (name, description), @keywords) ft
ON p.product_id = ft.[KEY]
ORDER BY ft.RANK DESC;
END
Шаг 4. Вывести результаты. Такая же сетка товаров, как в каталоге, с пагинацией.
Шаг 5. Протестировать. Вводим «дрель акумуляторна» — находит. Вводим «шуруповерт» — тоже находит.
Автодополнение (подсказки при вводе). Пока пользователь печатает, под полем появляется список товаров, начинающихся с этих букв. Реализуется через AJAX-запрос к процедуре, возвращающей 5 самых популярных товаров.
Поиск по артикулу (точное совпадение). Если пользователь ввёл цифры или код (например, «ZX-123»), система сначала ищет точное совпадение по артикулу, потом полнотекстовый.
Выделение найденных слов в результатах. В описании товара слова из поиска выделяются жирным шрифтом.
Маркетплейс запчастей спецтехники (250 000 товаров):
Затраты на настройку: 3 дня работы SQL-специалиста (60 тыс. руб). Окупилось за 1 месяц за счёт роста продаж.
Плохой поиск убивает конверсию на маркетплейсе. Хороший поиск — это как хороший продавец. Инвестиции в поиск окупаются быстрее, чем в рекламу.