Поиск не находит товары - индекс, переиндексация, выдача
Товар есть на сайте, а поиск его не показывает. Разбираем причины по убыванию частоты: почти все они про индекс, а не про сам поиск.
С чего начать
Проверяем, есть ли страница в индексе:
\Bitrix\Main\Loader::includeModule('search');$res = CSearch::Search(['QUERY' => 'название товара']);// пустой ответ здесь означает пустой индекс, а не сбой вывода на витринеwhile ($row = $res->Fetch()) { printf("%s %s %s\n", $row['MODULE_ID'], $row['ITEM_ID'], $row['TITLE']);}// пустой результат при существующем товаре означает, что его нет в индексеПоиск ищет по индексу, а не по инфоблокам. Пустая выдача при живом товаре - это почти всегда отсутствие записи в индексе, и разбирать дальше нужно именно его наполнение.
Смотрим, что вообще индексируется:
$res = CSearch::GetList([], ['MODULE_ID' => 'iblock'], ['MODULE_ID', 'PARAM2']);while ($row = $res->Fetch()) { printf("инфоблок=%s записей=%s\n", $row['PARAM2'], $row['CNT'] ?? '-');}// инфоблок, которого здесь нет, в поиске не участвует вовсеИндексируются только те инфоблоки, у которых это включено. Каталог, заведённый после настройки поиска, легко остаётся выключенным, и его товары не находятся с первого дня.
Догоняем индекс после массовых изменений:
$step = 100;$res = CSearch::ReIndexAll(false, 30, ['MODULE_ID' => 'iblock']);printf("проиндексировано записей: %s\n", $res);// переиндексация идёт шагами: полный проход на большом каталоге занимает часы// у внешнего поискового движка причины пустой выдачи свои, но проверка та жеПравки мимо интерфейса в индекс не попадают. Обмен, импорт и скрипты меняют данные напрямую, поэтому после них индекс догоняют переиндексацией, а не ждут, пока он обновится сам.
Причины
-
Инфоблок не участвует в поиске примерно 30% случаев
ПризнакНе находится ни один товар этого каталога, включая старые.
ПроверкаСмотрим настройки инфоблока: включено ли участие в поиске.
Что делатьВключаем участие в поиске и запускаем переиндексацию этого инфоблока.
-
Данные изменены мимо событий примерно 25% случаев
ПризнакСтарые товары находятся, а приехавшие обменом или скриптом - нет.
ПроверкаСверяем дату последней переиндексации с датой последнего обмена.
Что делатьСтавим переиндексацию порциями после обмена: полный проход каждый раз слишком дорог.
-
Нужного поля нет в индексе примерно 20% случаев
ПризнакТовар находится по названию, но не находится по артикулу или свойству.
ПроверкаСмотрим список индексируемых свойств у инфоблока.
Что делатьДобавляем свойство в индексируемые и переиндексируем инфоблок заново.
-
Страница закрыта правами или неактивна примерно 15% случаев
ПризнакАдминистратор находит товар, а покупатель - нет.
ПроверкаПроверяем активность элемента, даты показа и права группы на инфоблок.
Что делатьВозвращаем активность и права: поиск учитывает их при выдаче результатов.
-
Запрос не совпадает с индексом примерно 10% случаев
ПризнакНе находится по части слова или по слову в другой форме.
ПроверкаПробуем полное слово и проверяем, включена ли морфология для языка.
Что делатьВключаем морфологию и учим поиск синонимам либо переходим на внешний поисковый движок.
Частые вопросы
Как часто запускать переиндексацию?
После массовых изменений и порциями по расписанию. Полный проход - только после смены настроек индекса.
Почему поиск нашёл, а страница открывается с ошибкой?
В индексе осталась запись об удалённой странице. Такие записи убирает переиндексация или чистка индекса.
Можно ли искать по описанию свойств?
Да, если свойство отмечено как индексируемое. По умолчанию в индекс попадают не все поля.
Когда переходить на внешний поисковый движок?
Когда важны опечатки, синонимы и подсказки на большом каталоге. Штатный поиск на это не рассчитан.
Смежное
-
Релевантность выдачи: правила сортировки, стоп-слова, вес - когда товар находится, но стоит низко
-
Поиск по сайту на практике - оглавление подтемы
-
Живой поиск с подсказками: выдача, доступность, подстроки - та же выдача в подсказках поля
-
Поиск по сайту - устройство индекса и морфологии
-
Поиск по товарам: настройка, релевантность, опечатки - поиск именно по каталогу
-
Массовая правка товаров: обновление свойств скриптом - правки, которые проходят мимо индекса
-
Модули и решения - устройство модулей целиком
-
Настройка поиска по сайту: состав индекса, морфология, подсказки - что настроить до разбора
-
Внешний поисковый движок: индекс, запрос, синхронизация - другой поиск с другими причинами
-
Свои данные в поиске по сайту: индексация, адреса, права - когда искать нужно не по инфоблокам
-
Sphinx как движок поиска: подключение, индекс, переключение - если выдача пуста после смены движка