Чтобы элементы инфоблоков находились штатным поиском на сайте, их нужно проиндексировать модулем «Поиск». Разберём, где включить индексацию, как запустить переиндексацию вручную и по расписанию и почему контент иногда не попадает в результаты.
Как модуль «Поиск» индексирует инфоблоки
Штатный поиск в 1С-Битрикс работает не по «живым» данным инфоблоков, а по отдельному поисковому индексу. Модуль search обходит зарегистрированные источники (инфоблоки, разделы сайта, форумы, пользователей и т.д.) и складывает нормализованный текст в таблицы индекса. Компонент поиска bitrix:search.page ищет уже по индексу, а не по b_iblock_element напрямую.
Из этого следует главное правило: пока элемент не проиндексирован, поиск его не найдёт, даже если он активен и виден на сайте. Индекс обновляется тремя способами:
- «На лету» (onafterindex) — при сохранении элемента, если модуль поиска установлен и активен;
- полная переиндексация — ручной запуск обхода всех источников;
- агент переиндексации — фоновое обновление по расписанию.
Для инфоблоков в индекс попадают название и текст элемента, символьный код, значения текстовых свойств и привязка к разделам. Файлы и HTML-свойства индексируются как текст, служебные типы (число, дата) — ограниченно.
Включение индексации инфоблока
Индексация задаётся на уровне отдельного инфоблока. Откройте Контент → Инфоблоки → Типы инфоблоков → (нужный тип) → (инфоблок), нажмите «Изменить» и перейдите на вкладку настроек:
- Убедитесь, что модуль «Поиск» установлен (Настройки → Настройки продукта → Модули).
- На форме редактирования инфоблока проверьте флаг «Участвует в поиске» / индексации — он должен быть включён.
- Проверьте, что элементы активны и попадают в интервал активности (поля «Начало» и «Окончание активности»).
- Сохраните инфоблок.
Дополнительно в разделе Настройки модулей → Поиск можно указать, какие модули являются источниками индексации. Модуль iblock должен быть в списке разрешённых источников, иначе инфоблоки не будут обходиться при полной переиндексации.
Важно: права на инфоблок тоже влияют на выдачу — если у группы «Все пользователи (в том числе неавторизованные)» нет доступа хотя бы на чтение, анонимный посетитель не увидит элемент в результатах поиска.
Полная переиндексация вручную
После массовых изменений (импорт, правка прав, включение индексации у нового инфоблока) выполните полную переиндексацию:
- Перейдите в Настройки → Поиск → Переиндексация.
- При необходимости отметьте флаг «Переиндексировать всё заново» — тогда старый индекс очищается перед построением нового.
- Нажмите «Переиндексировать» и дождитесь завершения. Процесс идёт пошагово (пачками), чтобы не упереться в таймаут PHP.
- Проверьте счётчик обработанных элементов и отсутствие ошибок в отчёте.
На больших каталогах (десятки тысяч элементов) переиндексация может занять минуты и создать заметную нагрузку на БД. Запускайте её в период низкого трафика. Если процесс прерывается по таймауту, уменьшите «шаг» (число элементов за один проход) в настройках модуля поиска.
Автоматическая переиндексация по расписанию
Индексация «на лету» не всегда покрывает все случаи: элемент мог стать активным по расписанию, могли измениться права раздела или сработать импорт в обход API. Чтобы индекс не устаревал, включите фоновую переиндексацию:
- В Настройки модулей → Поиск включите параметр автоматической (фоновой) переиндексации;
- убедитесь, что на сайте работают агенты и настроен
cron(Настройки → Настройки продукта → Агенты); - для промышленных нагрузок запускайте агенты именно из cron, а не «на хитах», иначе обновление индекса будет зависеть от посещаемости.
Агент переиндексации обходит источники порциями и обновляет только изменённые записи, поэтому его влияние на нагрузку мягче, чем у ручной полной переиндексации «с нуля».
Что и как попадает в индекс
Не весь контент инфоблока индексируется одинаково. Ниже — ориентир по типам данных элемента.
| Данные элемента | Индексируется | Примечание |
|---|---|---|
| Название, символьный код | Да | Основной вес в релевантности |
| Анонс и детальный текст | Да | HTML очищается до текста |
| Свойства типа «Строка», «HTML/текст», «Список» | Да | Индексируется текстовое представление |
| Свойства «Файл» (документы) | Частично | Имя файла; содержимое — при поддержке парсеров |
| Свойства «Число», «Дата» | Ограниченно | Как значение, полнотекстовый поиск не по ним |
| Привязка к разделам | Да | Используется для фильтрации выдачи по правам |
Если нужно исключить служебное свойство из поиска, отключите у него участие в индексации в настройках свойства инфоблока. Это уменьшает «шум» в выдаче и размер индекса.
Частые ошибки
Типичные причины, по которым элементы инфоблока «не ищутся»:
- Модуль «Поиск» не установлен или отключён. Без него индекс не строится и не обновляется на лету.
- Не выполнена переиндексация после включения индексации. Старые элементы попадут в индекс только при полном обходе.
- Нет прав у «Все пользователи». Элемент проиндексирован, но анонимный посетитель его не видит из-за прав на инфоблок или раздел.
- Элемент неактивен или вне интервала активности. Неактивные элементы исключаются из выдачи.
- Агенты не запускаются. Если фоновая переиндексация настроена «на хитах» и трафика мало, индекс устаревает.
- Импорт в обход API. Данные, залитые прямыми SQL-запросами, не вызывают событие индексации — нужна ручная переиндексация.
- Переполнение / фрагментация индекса. На больших объёмах помогает полная переиндексация «с нуля» с очисткой старого индекса.
Как проверить, что элемент проиндексирован
Быстрая проверка после настройки:
- Откройте страницу поиска сайта и введите точную фразу из названия элемента — он должен найтись.
- В Настройки → Поиск → Статистика посмотрите число проиндексированных записей по модулю
iblock. - Если элемента нет — запустите ручную переиндексацию только для нужного инфоблока (через сохранение элемента или полный обход) и проверьте права доступа.
Для отладки удобно временно выдать группе «Все пользователи» право «Чтение» на тестовый инфоблок и повторить поиск от неавторизованного посетителя (в приватном окне браузера).
Итог
Индексация инфоблоков — обязательный шаг, чтобы контент находился штатным поиском. Ключевое: установите и активируйте модуль «Поиск», включите участие инфоблока в индексации, выполните полную переиндексацию после изменений и настройте фоновое обновление по агенту через cron. Если элемент не находится — проверьте активность, интервал активности и права группы «Все пользователи». Такой набор действий покрывает подавляющее большинство проблем с поиском по каталогу и другим инфоблокам.