Поиск 1С-Битрикс не находит новые страницы: как пересобрать индекс

Встроенный поиск 1С-Битрикс может перестать находить новые товары, статьи или разделы после переноса, импорта, изменения инфоблока или обновления шаблонов. Пользователь видит, что страница на сайте есть, но поиск её не находит. Это не всегда ошибка компонента поиска. Часто проблема в индексе.

Поиск в Битрикс работает не как прямой SELECT по всем таблицам. Данные должны попасть в поисковый индекс. Если индексация не прошла, страница может существовать, но для поиска её как будто нет.

Проверить модуль поиска

Сначала нужно убедиться, что модуль поиска установлен и используется на сайте. В административной части проверяют настройки модуля, морфологию, статистику и переиндексацию.

Если сайт старый, поиск может быть кастомным: компонент вывода один, а данные собираются через собственный код. Тогда нужно понять, используется ли стандартный индекс Битрикс или отдельная таблица.

Переиндексация

После массового изменения контента, переноса или восстановления базы часто нужна полная переиндексация. В админке это обычно делается через настройки модуля поиска.

Перед запуском на большом сайте лучше оценить объём данных. Полная переиндексация может занять время и создать нагрузку на базу.

SELECT COUNT(*)
FROM b_search_content;

Если таблица индекса пустая или в ней нет свежих записей, поиск не сможет найти новые страницы.

Инфоблоки и права

Битрикс учитывает права доступа. Если элемент виден администратору, но закрыт для группы “Все пользователи”, поиск для гостя может его не показывать. Нужно проверить:

  • активность инфоблока;
  • активность раздела;
  • активность элемента;
  • даты активности;
  • права групп пользователей;
  • параметры компонента поиска.

Если поиск тестируется под администратором, а проблема у гостей, нужно повторить проверку в режиме инкогнито.

Символьные коды и URL

Поиск может найти элемент, но вести на неправильный адрес. Тогда проблема не в индексе текста, а в формировании URL. Нужно проверить DETAIL_PAGE_URL, настройки инфоблока, ЧПУ компонента и шаблоны URL.

SELECT ID, NAME, DETAIL_PAGE_URL
FROM b_iblock
WHERE ID = 5;

Если структура URL изменилась после редизайна, старые адреса могли остаться в индексе. После исправления настроек нужна переиндексация.

Агенты и фоновые задачи

Если индексация выполняется агентами, нужно проверить их запуск. На сайте с малой посещаемостью агенты на хитах могут выполняться нерегулярно.

SELECT ID, NAME, ACTIVE, NEXT_EXEC, LAST_EXEC
FROM b_agent
WHERE NAME LIKE '%search%'
ORDER BY NEXT_EXEC ASC;

Если агенты вынесены на cron, нужно проверить cron-команду и лог выполнения.

Кодировка и морфология

На старых проектах после переноса могут появиться проблемы с кодировкой или морфологией. Поиск начинает странно обрабатывать русские слова, не находит формы слов или выдаёт мусор.

Нужно проверить кодировку сайта, базы, подключения и настройки модуля поиска. На проектах с историей UTF-8 и Windows-1251 могли смешиваться в неожиданных местах.

Кэш результата поиска

Компонент поиска тоже может кэшировать результат. Если индекс уже обновился, но компонент показывает старую выдачу, нужно проверить параметры кэша.

'CACHE_TYPE' => 'A',
'CACHE_TIME' => 3600,

Для диагностики можно временно отключить кэш компонента, но на рабочем сайте не стоит оставлять это надолго.

Чек-лист

  1. Проверить, используется ли стандартный модуль поиска.
  2. Проверить таблицу b_search_content.
  3. Запустить переиндексацию на тесте или в безопасное время.
  4. Проверить активность элементов и разделов.
  5. Проверить права для гостя.
  6. Проверить DETAIL_PAGE_URL и ЧПУ.
  7. Проверить агентов или cron индексации.
  8. Проверить кэш компонента поиска.

Если поиск Битрикс не видит новые страницы, лучше не начинать с переписывания шаблона. Сначала нужно проверить, попали ли данные в индекс и доступны ли они пользователю, под которым выполняется поиск.

Комментарии (0)

Пока нет комментариев. Будьте первым!