Модуль bitrix.search.title предоставляет функционал полнотекстового поиска с использованием метода CSearchTitle::GetList(), поддерживающего гибкую фильтрацию через параметр FILTER. Для реализации поиска по двум подстрокам в одном запросе необходимо сконфигурировать составной фильтр с применением логического оператора OR.
Алгоритм реализации:
-
Формирование схемы фильтра Создается ассоциативный массив
$filter, содержащий:-
Ключ
"LOGIC"со значением"OR"для объединения условий -
Вложенные массивы с условиями фильтрации по полю
"TAGS" -
$filter = [ "LOGIC" => "OR", ["TAGS" => "подстрока1"], ["TAGS" => "подстрока2"] ];
-
-
Определение полей выборки Массив
$arSelectзадает список возвращаемых полей документа:$arSelect = ['URL', 'TITLE', 'BODY', 'TAGS']; -
Инициализация поискового запроса Вызов
CSearchTitle::GetList()с параметрами:-
Порядок сортировки (
DATE_CHANGE => "DESC"- по убыванию даты модификации) -
Сконфигурированный фильтр
-
Флаг отключения постраничной навигации (
false) -
Лимит элементов на странице (
false- без ограничений) -
Список запрашиваемых полей
$rsResult = CSearchTitle::GetList( ["DATE_CHANGE" => "DESC"], $filter, false, false, $arSelect );
-
-
Обработка результирующего набора Объект
CDBResultпозволяет последовательно извлекать записи через методFetch():while ($arItem = $rsResult->Fetch()) { // $arItem содержит ассоциативный массив // с данными документа согласно $arSelect }
Код целиком
$filter = [
"LOGIC" => "OR",
["TAGS" => "подстрока1"],
["TAGS" => "подстрока2"]
];
$arSelect = ['URL', 'TITLE', 'BODY', 'TAGS']; // Список полей, которые хотим получить в результате
$rsResult = CSearchTitle::GetList(
["DATE_CHANGE" => "DESC"], // Сортировка результатов по дате изменения страницы
$filter, // Фильтр по подстрокам
false, // Необходимо ли использовать постраничную навигацию
false, // Количество записей на одной странице
$arSelect // Список полей, которые хотим получить в результате
);
while ($arItem = $rsResult->Fetch()) {
// $arItem содержит ассоциативный массив
// с данными документа согласно $arSelect
}
Особенности реализации:
-
Фильтр поддерживает сложные логические конструкции с комбинацией
AND/OR -
Метод
Fetch()возвращаетfalseпри завершении итерации -
Производительность запроса зависит от настроек поискового индекса и объема данных
Данный подход обеспечивает эффективный поиск документов, содержащих хотя бы одну из указанных подстрок в метатегах, с возможностью расширения условий фильтрации. Для работы механизма требуется предварительная индексация контента через административный интерфейс Битрикс.