Зачем разбирать эту тему
Пользователь может искать точный артикул, название с опечаткой или описывать потребность естественным языком. Это разные задачи, и один алгоритм редко решает их одинаково хорошо.
Как устроена задача на практике
Для небольшого каталога хватает индексов PostgreSQL. `pg_trgm` помогает с fuzzy matching, full-text добавляет лингвистику и веса полей.
Что важно в production
Elasticsearch/OpenSearch оправдан сложными facets и большим объёмом. Векторный поиск полезен для смысла, но хуже точных кодов, поэтому часто используется hybrid схема.
Типичные ошибки
Главная ошибка — выбирать технологию или паттерн раньше, чем сформулирован пользовательский сценарий и ограничения. Второй частый промах — проверять решение только на идеальном happy path и не продумывать восстановление после сбоя, повторный запрос и права доступа.
Практический вывод
Качество оцениваем на реальных запросах: zero-result rate, клики и конверсия после поиска. Технологию усложняем только после измерения.
- фиксируйте допущения до реализации;
- проверяйте решение на реальных данных и устройствах;
- сохраняйте наблюдаемость и возможность безопасного отката;
- усложняйте архитектуру только когда это подтверждает задача.