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

Настройка модуля поиска. Ограничение области поиска.

00 голосов
4
Добрый вечер.
Прошу сообщить, можно ли настроить модуль поиска таким образом, чтобы ограничить область поиска не только информационними блоками, но и свойствами элементов? Причем ограничение области поиска по свойствам элементов задает сам пользователь.
Чтобы вы могли понять мой запрос, хочу привести пример:
Есть информационный блок новости. Среди прочих свойств елементов инфоблока есть такое свойство как region - наименование субъекта российской федерации в котором находится компания - источник новости.
Задача - отсортировать новости по определенному региону и вывести результаты поиска с учетом поисковой фразы.
Поочередное использование модуля "Фильтр", а затем модуль "Поиска" не является красивым решением.
спросил 09 Янв, 14 от SaAkE (140 баллов)

4 Ответы

00 голосов
Без учета морфологии задача решается "в лоб".
В фильтр элементов нужно добавить поле SEARCHABLE_CONTENT.
Возможно в значении фильтра заменить пробелы на знаки | или & ...
ответил 19 Апр, 14 от Miso (740 баллов)
00 голосов
Спасибо.
ответил 12 Авг, 14 от SaAkE (140 баллов)
00 голосов
Цитата
Максим Смирнов пишет:
Без учета морфологии задача решается "в лоб".

В фильтр элементов нужно добавить поле SEARCHABLE_CONTENT.

Возможно в значении фильтра заменить пробелы на знаки | или & ...

Максим, не могли бы Вы раскрыть тему "В фильтр элементов нужно добавить поле SEARCHABLE_CONTENT" примером кода?
Заранее спасибо.
ответил 17 Дек, 14 от haruhi (100 баллов)
00 голосов
Код
   //SELECT
   $arSelect = array(
      "ID",
      "NAME",
      "IBLOCK_ID",
   );
   //WHERE
   $arFilter = array(
      "ACTIVE" => "Y",
      "IBLOCK_ID" => 33,
      "ACTIVE_DATE" => "Y",
      "ACTIVE" => "Y",
      "CHECK_PERMISSIONS" => "Y",
      "?SEARCHABLE_CONTENT" => "кошка|тигр|лев"
   );
   //ORDER BY
   $arSort = array(
      "ID" => "DESC",
   );

   $arResult["ITEMS"] = array();
   $rsElements = CIBlockElement::GetList($arSort, $arFilter, false, false, $arSelect);
   while($obElement = $rsElements->GetNextElement())
   {
      $arItem = $obElement->GetFields();
   }
ответил 07 Апр, 15 от Miso (740 баллов)

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

0 голосов
0 ответов
0 голосов
0 ответов
0 голосов
4 ответов
спросил 19 Окт, 13 от Cload (120 баллов)
0 голосов
1 ответ
+1 голос
1 ответ
спросил 11 Июнь, 14 от bravchik (130 баллов)