Разбираемся с фасетными индексами для Умного фильтра — создаём на странице «Фасетные индексы»
Дата публикации: 24.06.2026

Разбираемся с фасетными индексами для Умного фильтра — создаём на странице «Фасетные индексы»

Хочу себе такие же кнопки
ccb9a536

Введение

Вы уже знакомы с Умным фильтром в Битриксе, но без фасетных индексов он работает медленно и часто «залипает» на больших каталогах. Фасетные индексы позволяют быстро отбирать товары по нескольким атрибутам (цене, бренду, цвету, наличию) без полного перебора базы. В этом уроке вы научитесь создавать страницу «Фасетные индексы», настроить её в админке и понять, как индексы ускоряют поиск.


1. Что такое фасетный индекс?

Термин Описание Пример
Фасет Атрибут, по которому можно «разрезать» набор товаров. Цвет, размер, бренд
Индекс Специальная структура данных, хранящая предрасчитанные связи «товар‑фасет». Таблица b_catalog_product_facet_index
Фасетный индекс Совокупность индексов по всем выбранным фасетам, позволяющая быстро получить пересечение наборов. Товары, которые одновременно «красные», «размер M», «в наличии»

Аналогия: представьте библиотеку, где книги расставлены по полкам (жанр) и полкам по цвету обложки. Если вам нужны только красные книги‑детективы, вы берёте сразу нужные полки, а не листаете каждый том. Фасетный индекс – это карта таких полок.


2. Как работает умный фильтр с фасетными индексами

  1. Запрос пользователя → набор выбранных фасетов (например, цвет=красный, бренд=Apple).
  2. Битрикс формирует подзапросы к таблице индексов, получая ID товаров для каждого фасета.
  3. Пересечение наборов (AND) даёт окончательный список товаров.
  4. Сортировка и пост‑обработка (цена, наличие) уже работают только с уже отфильтрованным небольшим набором.

Без индексов шаг 2 бы требовал полного сканирования b_catalog_product – O(N) операций. С индексами – O(log N) или даже O(1) для часто используемых фасетов.


3. Подготовка данных

3.1. Выбор фасетов

  • Обязательно: атрибуты, которые часто используют покупатели (цена, бренд, цвет, размер).
  • Не рекомендуется: атрибуты с слишком большим числом уникальных значений (например, артикул).

3.2. Ожидавать фасетов в инфоблоке

  1. Откройте Настройки → Список свойств инфоблока.
  2. Для каждого свойства, которое будет фасетом, включите «Тип свойства – Список» и «Разрешить множественный выбор» (если нужно).
  3. Установите «Фильтрация – Да».

3.3. Запуск генерации индексов

В админке Битрикса перейдите в «Настройки → Фасетные индексы» и нажмите «Сгенерировать». Система создаст/обновит таблицу b_catalog_facet_index.

Важно: генерация может занять несколько минут на крупном каталоге. Делайте её в ночное время или в режиме «Тихий режим», если включена опция «Обновлять индекс по расписанию».


4. Создание страницы «Фасетные индексы»

4.1. Создание нового компонента

  1. В «Контент → Страницы» создайте страницу faset-index.php.
  2. Подключите компонент bitrix:catalog.filter с параметром USE_FACET_INDEX = Y.
<?$APPLICATION->IncludeComponent(
    "bitrix:catalog.filter",
    "smart",
    array(
        "IBLOCK_TYPE" => "catalog",
        "IBLOCK_ID" => 5,
        "FILTER_NAME" => "arrFilter",
        "USE_FACET_INDEX" => "Y",
        "SEF_MODE" => "Y",
        "SEF_URL_TEMPLATES" => array(
            "smart_filter" => "#SECTION_ID#/filter/#SMART_FILTER_PATH#/apply/",
        ),
    ),
    false
);?>

4.2. Шаблон вывода

  • В папке components/bitrix/catalog.filter/templates/smart/ создайте template.php.
  • Добавьте блоки для каждого фасета:
<div class="facet-block">
    <h4>Цвет</h4>
    <?foreach($arResult["ITEMS"]["COLOR"]["VALUES"] as $value => $item):?>
        <label>
            <input type="checkbox" name="color[]" value="<?=$value?>" <?=($item["CHECKED"] ? "checked" : "")?>>
            <?=$item["NAME"]?> (<?=$item["COUNT"]?>)
        </label><br>
    <?endforeach;?>
</div>
  • COUNT – количество товаров в данном фасете, берётся из индекса, поэтому отображается мгновенно.

4.3. SEO‑дружелюбные URL

С помощью SEF‑режима получаем ссылки вида:

/catalog/phones/filter/color-red/brand-apple/apply/

Эти URL легко индексируются поисковиками и могут быть использованы в рекламных кампаниях.


5. Оптимизация работы фасетных индексов

Проблема Причина Решение
Медленный отклик Индекс не обновлялся после массовых импортов Включить «Обновлять индекс по расписанию» (cron) или вызвать \Bitrix\Catalog\Engine\Index\Facet::rebuild(); вручную
Неправильные количества Свойства с типом «Число» не добавлены в индекс Перейти в «Настройки → Фасетные индексы», добавить нужные свойства в список «Индексы по числовым полям»
Большой объём памяти Индекс хранит слишком много уникальных значений (например, SKU) Исключить такие свойства из индекса, использовать обычный фильтр без фасетного ускорения
Конфликт с кешем Кеш страниц не учитывает изменения фасетного индекса Отключить кеш для страницы «Фасетные индексы» или добавить CACHE_GROUPS => "N" в параметры компонента

5.1. Тонкая настройка параметров индекса

$facetIndex = new \Bitrix\Catalog\Engine\Index\Facet();
$facetIndex->setCacheTime(3600); // кешировать результаты 1 час
$facetIndex->setMaxFacetValues(200); // ограничить количество значений в фасете
$facetIndex->rebuild(); // пересоздать индекс после изменения настроек

5.2. Мониторинг производительности

  • Включите «Отладочный режим» в bitrix/.settings.php ('debug' => true).
  • Смотрите запросы в bitrix/admin/diagnostics.php – запросы к b_catalog_facet_index должны быть быстрыми (время < 0,05 сек).

6. Тестирование и проверка корректности

  1. Откройте страницу «Фасетные индексы» в браузере.
  2. Выберите несколько фасетов (цвет + бренд).
  3. Обратите внимание на число товаров рядом с каждым фасетом – оно должно уменьшаться при каждом выборе.
  4. Откройте инструменты разработчика → Network и найдите запрос к ajax.php. В параметрах facet_index=Y будет видно, что сервер использует таблицу b_catalog_facet_index.

Если количество товаров не меняется, проверьте:

  • Правильность ID свойств в шаблоне.
  • Наличие USE_FACET_INDEX = Y в параметрах компонента.
  • Актуальность индекса (выполните rebuild).

7. Практика для закрепления

  1. Создайте фасет «Размер» (S, M, L) в инфоблоке и добавьте его в список индексов. Сгенерируйте индекс и проверьте, что рядом с каждым размером отображается корректное количество товаров.
  2. Измените шаблон так, чтобы фасет «Цена» выводился в виде ползунка (range). Подключите к нему индексацию по числовому полю и убедитесь, что диапазон работает без полной перезаписи каталога.
  3. Настройте cron‑задачу для автоматической пересборки индекса каждые 6 часов. Проверьте логи, что задача отрабатывает без ошибок.
  4. Проведите нагрузочный тест: откройте страницу с 5 одновременно выбранными фасетами (цвет, бренд, размер, материал, наличие). Замерьте время отклика (должно быть < 0,2 сек). Если время больше – оптимизируйте setMaxFacetValues.
  5. Сравните SEO‑результаты: создайте два URL‑фильтра – один с фасетным индексом, другой без. С помощью Google Search Console проверьте, какой из них индексируется быстрее.

8. Заключение

Фасетные индексы – это «ускоритель» умного фильтра, который превращает громоздкий поиск в мгновенный отклик. Правильная подготовка свойств, генерация индексов и их поддержка в актуальном состоянии позволяют обслуживать каталоги с десятками тысяч товаров без потери производительности. Следуя описанным шагам, вы сможете создать страницу «Фасетные индексы», которая будет работать быстро, стабильно и удобно для ваших покупателей.


Дополнительные ресурсы


Удачной работы! Если возникнут вопросы, пишите в комментариях – будем разбирать их вместе.


Английский видеочат для путешествий
Чат рулетка 2026: Интерактивные элементы
Чат-рулетка: случайный собеседник в одно нажатие
Чат с Аней: Моё общение
Этикетки для упаковки и доставки
Как настроить бэкапы для вашего сайта на хостинге Host.bg
Как обновить PHP на хостинге Host.bg
Как решить проблемы с загрузкой сайта на Host.bg
Калькулятор зарплаты SEO-оптимизатора
Курска: автошколы с бесплатной консультацией
Лайфхаки для управления хостингом на Host.bg
Монетизация через платные услуги
Мск: ИП или ООО — лучший старт для бизнеса?
Общение в интернете без риска
Ошибки при настройке хостинга и их решения
Проблемы с доменами и их решения на хостинге Host.bg
Продвижение сайтов: поисковое продвижение + ИИ
Ремонт квартир с использованием норм
Roblox: игровая культура
Сайтостроение: основы и секреты
Сколько стоит биткоин
Сравнение ценовых диапазонов хостинга Host.bg
Трубная продукция для трубопроводных конструкций
Утепление в Твери и Брянской области
Vdsina: Великая сила
Видео рулетка 18+
Видеочат с случайным собеседником онлайн
Видеообщения по всему миру
Выбор оптимального плана хостинга на Host.bg
рейтинг хостингов 2026 Быстрые VDS серверы