Разбираемся с фасетными индексами для Умного фильтра — создаём на странице «Фасетные индексы»
Дата публикации: 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. Заключение

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


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


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


CamZamZam - онлайн фото с вебкамеры с эффектами
Cartoon Network: игры с персонажами
Чат рулетка в 2026: будущие функции
Эксперт по доменным стратегическим решениям
Хостинг для e-commerce проектов
Как играть в слоты
Как настроить CDN для сайта на хостинге Host.bg
Как настроить SSL-сертификат для сайта на Host.bg
Как оптимизировать производительность сайта с хостингом Host.bg
Как выбрать правильный хостинг для вашего сайта
Какие бывают ЛОР болезни у детей
Кассовые терминалы с оплатой картами
LOL куклы витрина детская
Лучшие видеорегистраторы для водителей
Онлайн QR-код сканер
Онлайн-связь
Оптимизация производительности баз данных на хостинге Host.bg
Основы настройки веб-хостинга: что вам нужно знать
Партнёрская программа без блога: как получать трафик из Telegram
Профессиональные хитрости для пользователей хостинга Host.bg
Регистрация ИП в Москве для иностранных граждан
Сравнение хостинга Host.bg с другими провайдерами
Субтитры — нет, уши — включены: погружение в английский за 5 минут
Сумки с бусинами
Техника для строительства загородных трасс
ТОП-10 VPS для разработчика: рейтинг серверов под рабочие задачи
WordPress блог для бизнеса
рейтинг хостингов 2026 Быстрые VDS серверы