Покупець вводить у рядок пошуку «тепла куртка для собаки середнього розміру» і отримує порожню сторінку. Хоча на складі лежать три підходящі моделі: «Комбінезон утеплений для собак, розмір M», «Жилет на флісі для пса» і «Пуховик зимовий для середніх порід». Жодне з них не містить усіх слів запиту в тому вигляді, як їх написала людина. Магазин просто не розуміє, про що його питають.
Чому пошук за збігом слів не чує описових запитів
Класичний пошук у більшості CMS працює як індекс у кінці підручника: розбиває назву товару на слова й шукає ті, що збіглися із запитом. Іноді додається стемінг — обрізання закінчень, щоб «куртка» і «куртки» вважалися одним словом. На запитах на кшталт «Bosch GSR 12V» цього досить. На запитах, де людина описує потребу, а не називає товар, — ні.
У прикладі з курткою алгоритм бачить шість слів. «Тепла» не збігається з «утеплений», «куртка» — з «комбінезоном», «середнього розміру» — з літерою M. Пошук або вимагає всіх слів і повертає нуль, або вимагає хоч одного й видає вперемішку все, де трапилося слово «для».
Опечатки, транслит і не та розкладка
Друга група проблем — технічна. Людина набирає з телефона на ходу, і запит виглядає як «кофеварка», «kavovarka» або «rfdjdfhrf» — останнє означає «кавоварка», набране в англійській розкладці. Для системи, що порівнює рядки посимвольно, це три різні слова, і жодне не існує в каталозі.
- Опечатки закривають через нечітке порівняння: допустимо одну-дві замінені літери на слово.
- Транслит вимагає таблиці відповідностей між латиницею й кирилицею, причому варіантів записів кілька.
- Розкладку виправляють мапою клавіш: кожен символ переводять у той, що стоїть на тій самій клавіші в іншій мові.
- Синоніми («худі» і «толстовка», «павербанк» і «зовнішній акумулятор») класично ведуть вручну у словнику, який вічно відстає від асортименту.
Семантичний пошук і ембединги простими словами

Семантичний пошук підходить з іншого боку: порівнює не слова, а зміст. Для цього мовна модель перетворює текст на ембединг — список із кількох сотень чисел. Його зручно уявляти як координати точки в просторі смислів. Тексти, близькі за значенням, опиняються поруч, навіть якщо в них немає жодного спільного слова.
Під час індексації кожен товар — назву, опис, ключові характеристики — один раз переводять у вектор і кладуть у векторну базу. Коли надходить запит, його теж перетворюють на вектор і шукають найближчих сусідів за косинусною подібністю. «Тепла куртка для собаки» лягає поруч з «утепленим комбінезоном для пса», бо модель на великих обсягах тексту засвоїла, що це про одне й те саме.
Гібридний пошук: вектори плюс точний збіг
У векторів є слабке місце: вони погано відчувають точні ідентифікатори. Артикул «XR-2041» чи модель «A54» для моделі — майже шум, і замість потрібного смартфона можна отримати «щось схоже». Тому на практиці роблять гібрид: паралельно запускають класичний повнотекстовий пошук і векторний, а потім зводять обидва списки. Поширений спосіб — злиття за рангами: товар, що стоїть високо в обох списках, піднімається нагору, а той, що з’явився лише в одному, отримує менше балів.
Саме так зазвичай побудований розумний пошук по сайту: точний збіг відповідає за артикули й бренди, семантика — за описи й «людські» формулювання, а словники розкладки й транслиту стоять перед обома як нормалізація запиту.
Ранжування: хто потрапляє в першу п’ятірку
Знайти релевантні товари — половина роботи. На мобільному покупець бачить чотири-шість карток, тож порядок важить не менше за повноту. Поверх базової оцінки подібності зазвичай додають бізнес-сигнали:
- наявність на складі — товар «немає в наявності» опускають або ховають;
- збіг із фільтрами, які модель витягла із запиту: розмір M, ціна «до 1000 грн», колір;
- популярність і клікабельність у минулих пошуках;
- маржинальність чи пріоритет категорії, але обережно, щоб не зламати релевантність.
Простий розрахунок показує ціну помилки. Якщо магазин отримує 300 пошукових запитів на день і 15 % із них закінчуються порожньою видачею, це 45 людей щодня, які пішли без жодного варіанту. Навіть якщо купив би лише кожен десятий — це чотири-п’ять замовлень, втрачених на рівному місці.
Що потрібно від даних каталогу

Модель розуміє лише те, що їй дали. Якщо картка складається з назви «Модель 7731» і фото, жоден алгоритм не здогадається, що це зимовий комбінезон. Перед підключенням семантики варто пройтися каталогом за коротким чек-листом:
- Назви описові: тип товару, призначення, ключова характеристика, а не лише внутрішній код.
- Характеристики заповнені в окремих полях — розмір, матеріал, сезон, сумісність, — а не загублені в довгому описі.
- Одиниці виміру однакові по всьому каталогу: не «M», «середній» і «40–45 см» упереміш.
- Категорії не дублюються, а дерево не має гілок з одним товаром.
- Залишки оновлюються щонайменше раз на день, інакше ранжування підніматиме те, чого вже немає.
- Опис написаний для людини, без переліку ключових слів через кому — такий текст плутає модель.
Як перевірити свій пошук за вечір
Не потрібно жодних інструментів, крім таблиці. Вивантажте з аналітики сотню найчастіших запитів і окремо — ті, що дали нуль результатів. Додайте двадцять власних: з опечатками, транслитом, у неправильній розкладці, описові на кшталт «подарунок дівчині, що любить каву». Прогоніть кожен через пошук і позначте, чи є у першій п’ятірці хоч один релевантний товар.
Частка вдалих відповідей — і є вашою базовою метрикою. Повторіть той самий набір після змін, і ви побачите, чи пошук справді став розумнішим, а не просто інакшим.
