Наверняка, все знают, что в битриксе есть морфологический поиск. И вроде бы он даже худо-бедно работает. Но если мы торгуем товарами, и хотим, чтобы поиск искал и по части чего-то специфического, например, артикула товара (пример: артикул «Р6543», подстрокой будет «6543»), то ничего из этого не выйдет. Поиск тупо ничего не найдёт.
Как можно решить?
Как вариант, в момент индексации элемента добавлять в таблицу b_search_content_stem наши части слов. То есть, в нашем случае, для товара с артикулом «Р6543» мы добавим «6543» в поисковый индекс. Запросы «654» и «65» так же будут отдавать товар с артикулом «Р6543».
Столкнувшись с проблемой (в очередной раз), отмечусь и я тут.
Оптимальным было бы просто не использовать морфологию конкретно для слов, которые не являются естественными. Например, для русскоязычного сайта это слова, содержащие цифры и латинские буквы (склонять английские названия очень редко надо). Можно было бы сделать отдельной настройкой в модуле.
Почему-то (как я подозреваю, в модуль не лазил) этого не сделали, и сделать самому, боюсь будет долго. Пока склоняюсь к тому, чтобы в своем варианте search.page детектировать похожий на название/артикул запрос (типа \[^\b]*[0-1a-z]+[^\b]*\i) и сразу запускать поиск без морфологии.
Альтернативным вариантом было бы просто добивать результаты морфологического поиска (если их мало получилось, скажем) результатами поиска без морфологии, но тут надо как-то запариться со сквозной навигацией.
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».