Налаштування повнотекстового пошуку для Bitrix CMS
Пошук по сайту в Bitrix працює через модуль search. При первинному налаштуванні пошук або не знаходить нічого (індекс не побудований), або знаходить все підряд включаючи службові сторінки, або працює повільно на великих обсягах контенту.
Як влаштований пошук у Bitrix
Модуль search будує повнотекстовий індекс у таблицях:
-
b_search_content— індексований контент (заголовки, теги, тіло) -
b_search_content_stem— стем-індекс (корені слів для морфології) -
b_search_tag— теги для пошуку
Індексування відбувається автоматично при збереженні елементів (інфоблоків, сторінок) через обробник подій OnSearchIndex. Примусове переіндексування — через адміністративний розділ або агент.
Налаштування джерел пошуку
Параметри → Пошук → Параметри модуля:
- Зберігати історію пошуку — корисно для аналітики
- Морфологія — увімкнути для пошуку за словоформами ("купити", "купив", "покупка")
- Символи в індексі — мінімальна довжина слова для індексування (рекомендується 3)
Налаштування індексованих джерел (Параметри → Пошук → Переіндексування):
- Вибрати інфоблоки для індексування
- Вказати, які властивості індексувати
- Виключити технічні сторінки та службовий контент
Компонент пошуку
$APPLICATION->IncludeComponent('bitrix:search.page', '', [
'SITE_ID' => 's1',
'SEARCH_CACHE_TIME' => 3600,
'DEFAULT_WORD' => '',
'MINIMAL_QUERY_LEN' => 3,
'USE_SUGGEST' => 'Y', // підказки при введенні
'arrFILTER' => [ // джерела для пошуку
['MODULE_ID' => 'iblock', 'PARAM1' => 'catalog', 'PARAM2' => 5],
['MODULE_ID' => 'iblock', 'PARAM1' => 'content'],
],
]);
Морфологія та релевантність
Bitrix використовує вбудоване стемування для російської мови. При увімкненій морфології запит "червоні сукні" знайде "червону сукню" та "червоне сукно". Морфологічний індекс будується в b_search_content_stem.
Релевантність результатів керується ваговими коефіцієнтами:
- Слово в заголовку — високий вага
- Слово в тілі — середня вага
- Слово в тегу — середня вага
Налаштування ваг: b_search_content.PARAM1 містить додаткові параметри джерела.
Переіндексування та продуктивність
При великому каталозі (50 000+ товарів) повне переіндексування займає значний час. Рішення:
- Використовувати інкрементальне індексування (тільки змінені елементи)
- Розбити переіндексування на порції через агент
- Для високонавантажених проектів — перейти на зовнішнє рішення (Elasticsearch + користувацький модуль)
Моніторинг стану індексу:
$rsSearch = CSearch::GetList('s1', ['SITE_ID' => 's1'], false, ['nTopCount' => 1]);
// Дата останнього оновлення індексу
Терміни виконання
Базове налаштування пошуку з індексуванням каталогу та контенту — 2–4 години. Тонке налаштування морфології, ваг та виключень — 4–8 годин. Інтеграція з Elasticsearch — 2–5 днів.







