Многие из вас сталкивались с проблемой, когда в поиске появляются товары, которые не должны были появиться, Например, вводим "аро" и нам выдает позиции а-ля "мыло Dove" и т.д. Не сразу понятно, где в мыло dove встречается "аро", но после изучения товара вы находите описание товара "...аромат мыла не ос...". Я думаю такой функционал поиска битрикс введет в заблуждение пользователей. Поэтому читай ниже :)
Решение
Необходимо зайти в файл init.php. Для тех кто не знает, он должен находиться по следующему пути "/local/php_interface/init.php" (создаем, если его нет).
Добавляем следующий обработчик в код:
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields) {
$arIblock = array(1);
$arDelFields = array("DETAIL_TEXT", "PREVIEW_TEXT") ;
if (CModule::IncludeModule('iblock') && $arFields["MODULE_ID"] == 'iblock' && in_array($arFields["PARAM2"], $arIblock) && intval($arFields["ITEM_ID"]) > 0){
$dbElement = CIblockElement::GetByID($arFields["ITEM_ID"]) ;
if ($arElement = $dbElement->Fetch()){
foreach ($arDelFields as $value){
if (isset ($arElement[$value]) && strlen($arElement[$value]) > 0){
$arFields["BODY"] = str_replace (CSearch::KillTags($arElement[$value]) , "", CSearch::KillTags($arFields["BODY"]) );
}
}
}
return $arFields;
}
}
Где $arIblock содержит id блока, к которому применяется данный код.
А $arDelFields массив свойств
После этого запускаем переиндексацию поиска. В админке путь "Настройки > Поиск > Переиндексация", обязательно снимаем галочку с "Переиндексировать только измененные"