Ответ
Для простых случаев (точные совпадения, фильтры) — правила (быстро, прозрачно, мало данных). Пример SQL-фильтра:
SELECT * FROM products
WHERE name LIKE '%iphone%'
AND price < 1000
Для сложных сценариев (синонимы, опечатки, персонализация) — ML (требует данных и вычислительных ресурсов). Например, эмбеддинги в Elasticsearch.
Компромисс: гибридный подход — базовый релевантный поиск через правила + ML-ранжирование топ-N результатов.