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


По каким полям осуществляется поиск?

0 голосов
Попросили для магазина сделать так, чтобы товар находился по артикулу.
Не пойму как подключить поле артикул в индексацию поисковиком.
спросил 18 Июль, 13 от kinst (160 баллов)

7 Ответы

0 голосов
В настройках инфоблока дляэтого свойства укажите "участвует в поиске"
ответил 18 Июль, 13 от Pomnep (13,960 баллов)
0 голосов
И обязательно после установки галки "участвует в поиске" провести переиндексацию
ответил 07 Сен, 13 от Oggi (520 баллов)
0 голосов
Извините за молчание - уезжал на месяц.

То, что вы советуете почему то не работает. В каталоге более 7000 товаров, а при переиндексации индексируется только около 1000 элементов. Из них более половины новости, статьи и статические страницы.

PS. Уже после ответа обнаружил, что не зависимо от состава каталога (удалял и добавлял разделы и товар) всегда индексируется 1043 записей. Поэтому возможно ограничение где-то в настройках индексации, хотя я не знаю где такое может быть.
ответил 05 Дек, 13 от kinst (160 баллов)
0 голосов
попробовать снять галку "Переиндексировать только измененные"
и установить шаг например в 20 секунд
ответил 18 Март, 14 от Oggi (520 баллов)
0 голосов
Спасибо. Вроде заработало. Не знаю все ли проиндексированы. Вроде бы не все.
В базе около 7200 документов, а проиндексировано 5644.
Причём количество не зависит от шага времени.
ответил 10 Июль, 14 от kinst (160 баллов)
0 голосов
А как исключить поле из поиска??? а именно полное описание.

на сайте 300000 наименований и большие подробные описания.
ответил 10 Ноя, 14 от Obiron (100 баллов)
0 голосов
Хорошо что у нас нет на форуме ответа "НИКАК" =)
Написать обработчик события перед индексированием и поместить в файл /bitrix/php_interface/init.php
Код
// регистрируем обработчик
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
 // создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields)
{
   $arFields["BODY"] = "";
   return $arFields;
}

ВНИМАНИЕ!
Не уверен что в BODY не хранится и индекс артикулов. Надо пробовать!
Если храниться, то в обработчике надо получать артикул и заменять им текст описания.
Код
// регистрируем обработчик
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
 // создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields)
{
   if(!CModule::IncludeModule("iblock"))
      return $arFields;
   if($arFields["MODULE_ID"] == "iblock")
   {
      $db_props = CIBlockElement::GetProperty($arFields["PARAM2"],$arFields["ITEM_ID"], array("sort" => "asc"), Array("CODE"=>"CML2_ARTICLE"));
      if($ar_props = $db_props->Fetch())
         $arFields["BODY"] .= " ".$ar_props["VALUE"];
   }
   return $arFields;
}

Удачи!
ответил 08 Март, 15 от Tei (480 баллов)

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

0 голосов
1 ответ
0 голосов
2 ответов
0 голосов
2 ответов
0 голосов
1 ответ
спросил 20 Июль, 15 от Rattlesneyk (140 баллов)
0 голосов
1 ответ