Полнотекстовый поиск в SQL Server: как мы сделали поиск по 250 000 товаров

Ваш поиск теряет клиентов прямо сейчас

Клиент вводит «дрель аккумуляторная». Ваш каталог на 250 000 товаров выдаёт пустоту. Почему? Он опечатался — написал «акумуляторная». Или поменял слова местами — «аккумуляторная дрель». Всё, клиент ушёл к конкуренту.

Дальше покажу, как мы это чинили на реальном маркетплейсе запчастей спецтехники. Настройка заняла 3 дня. Поиск стал понимать опечатки, словоформы и порядок слов. Вы получите конкретный рецепт на Falcon Space — с кодом процедуры и примерами запросов.

Важно. Плохой поиск убивает конверсию тихо. Клиент не жалуется — он просто уходит. И вы даже не узнаете, что он искал.

Почему LIKE не тянет каталог на 250 000 товаров

Стандартная конструкция WHERE name LIKE '%дрель%' ломается на четырёх вещах:

В MS SQL Server есть полнотекстовый поиск (Full-Text Search). Он закрывает все четыре проблемы. Мы его и взяли.

Что умеет полнотекстовый поиск в SQL Server

Как настроить полнотекстовый поиск на Falcon Space: 5 шагов

Шаг 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-специалиста. Окупилось за месяц за счёт роста продаж.

Что делать дальше

Хороший поиск — это как хороший продавец. Он понимает с полуслова, не переспрашивает и ведёт к покупке. Плохой — молча теряет клиентов.

Инвестиции в поиск окупаются быстрее, чем в рекламу. Начните с полнотекстового индекса и процедуры на CONTAINSTABLE — это база, которая работает на любом каталоге от 10 000 позиций.

Страница-источник на сайте falconspace.ru