Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Возможность поиска по части слова?

00 голосов
3
Пример: существует товар. У товара есть артикул (свойство введено в товар, как в инфоблок). Значение артикула "-SVET"
После индексации при поиске по "-SVET" товар находится, а если убрать дефис и искать по "SVET", то не находится. Есть ли способ устранить такую проблему?
При этом, если в описании товара есть слово "бумага", то он прекрасно ищется и по "бумаг", и по "бума".
Почему-то с артикулом такое не происходит.

P.S. Удивительно, но только сейчас заметил, что по "бумаг" находятся слова "бумага", "бумаг", "бумаги".
А по "бума" только "бум" и "бума", а "бумага", "бумаг" и "бумаги" не находятся. И соответственно на выходе разные результаты.
То есть поиск своеобразно морфологический.
спросил 23 Март, 14 от kinst (160 баллов)

3 Ответы

00 голосов
В настройках модуля поиска /bitrix/admin/settings.php?lang=ru&mid=search на вкладке "Морфология", в поле "Cимволы, по которым не производится разделение документа на слова" удалите символ "тире" и выполните полную переиндексацию.
ответил 21 Сен, 14 от Miso (740 баллов)
00 голосов
Спасибо. Попробую. Но боюсь это спасёт только в случае дефиса. А если у меня в артикуле стоит 0006201, а искать будут только по 6201, то всё равно не найдут.
Поэтому вопрос остаётся - существует ли способ осуществлять поиск по части слова?
Или штатного не существует? И нужно самому писать модуль?
ответил 25 Янв, 15 от kinst (160 баллов)
00 голосов
Если стоит задача искать по части чилового артикула, то вам необходимо кастомизировать компонент bitrix:search.page (например в my:search.page). И "переписать" запрос введенный пользователем сайта.
Например так:
Код
} //примерно строка 214

$arResult["REQUEST"]["~QUERY"] = preg_replace('/(\d+)/', '"\\1"', $arResult["REQUEST"]["~QUERY"]);
$arResult["REQUEST"]["QUERY"] = htmlspecialcharsex($arResult["REQUEST"]["~QUERY"]);

if($tags!==false)


Идея в том, что запрос в двойных кавычках интерпретируется как поиск по подстроке.
ответил 09 Май, 15 от Miso (740 баллов)

Похожие вопросы

0 голосов
5 ответов
0 голосов
3 ответов
0 голосов
4 ответов
спросил 02 Янв, 14 от LoLiTKa (620 баллов)
0 голосов
0 ответов
0 голосов
0 ответов