Как пересоздать фасетный индекс, если много товаров
В данной статье пойдет речь как создавать фасетный индекс, если товаров очень много. Ну прям настолько много, что переиндексация через админку занимает много времени. Сидеть и ждать с открытым браузером неудобно, а если у вас еще и обмен с 1С, в ходе которого периодически могут прилетать новые свойства – нужно также периодически запускать переиндексацию и ждать, ждать.
Лучший вариант для решения такой задачи – это делегировать переиндексацию фасетов самому серверу.
Для реализации данного способа необходимы навыки разработчика
Я не буду объяснять как искать кусок кода в модуле Битрикса, который отвечает за переиндексацию. А просто приведу уже оттесанный временем исходный код скрипта, который нужно будет повесить на крон на стороне сервера.
Вообще я советую вам учиться находить нужные фрагменты кода в модулях Битриксе. Все же, навык разбираться в коде других разработчиков благотворно влияет на наш растущий профессионализм.
Итак, листинг кода:
Инструкция на случай «не знаю что дальше делать»:
- Создаем файл с данным кодом где-нибудь в папке local или в модуле с классами проекта или по старинке создать в /bitrix/php_interface/cron/.
- Заменяем ID инфоблока с товарами.
- Вешаем скрипт на крон через консольную команду crontab -e или, если у вас шаред хостинг, через панель управления.
Пример:
0 0 */7 * * /usr/bin/php -f /home/bitrix/ext_www/test.web-masterok.ga/bitrix/php_interface/cron/reindex.php
Замените путь к файлу на свой. В моем случае скрипт отрабатывает каждую неделю ровно в полночь. Если нужно по-другому – меняем.
Кстати, советую сервис crontab.guru, с помощью которого можно быстро и правильно настроить время отработки скрипта по расписанию.
Недостатки скрипта
В приведенном мною скрипте есть недочет, он принудительно пересоздает фасеты, что не рационально. Но есть решение…
В дальнейшем в другой статье я добавлю листинг класса, который умеет проверять, есть ли потребность в переиндексации фасетного индекса.
Также, не рекомендую устанавливать выполнение фасетов на то время, когда у вас по расписанию выполняется обработка другого скрипта, например, с созданием бекапа на кроне.
Итоги
Такой вот скрипт поможет вам выполнять переиндексацию фасетов для вашего каталога по расписанию. Данный способ особенно актуален, если на сайте десятки-сотни тысячи товаров и периодически добавляются новые свойства.