Менеджер или закупщик вводит фрагмент артикула и должен увидеть нужный товар. По факту поиск выдавал либо пустоту, либо всё подряд — товары, где встречается похожий кусок строки.
Почему штатный поиск не справляется
Задача распадается на две половины, и чинить надо обе. Со стороны индекса артикул нужно разложить на формы, чтобы он находился по фрагменту. Со стороны запроса мешает дефис, который поисковый модуль трактует по-своему.
Отдельная тонкость: объект запроса в Битриксе доступен только для чтения. Поменять строку поиска «в лоб» нельзя — попытка роняет все страницы поиска с ошибкой сервера, поэтому нормализацию встраивают штатным механизмом фильтров.
Что сделали
- Обработчик, который перед индексацией кладёт в индекс формы артикула.
- Исключили дефис из состава слова и провели полную переиндексацию каталога.
- Нормализацию запроса на входе через фильтр: запрос с дефисом ищется так же, как без него, и при этом не превращается в поиск по всем товарам с общим фрагментом.
Результат
Поиск по артикулу и его части работает, в том числе для артикулов с дефисами. Для оптового магазина это не украшение, а основной способ навигации: человек знает, что ему нужно, и не хочет ходить по разделам.
Статья была полезна?