Middle Инфоблоки: D7 и продвинутое Опционально

Умный фильтр и фасетный индекс

Компонент catalog.smart.filter опирается на фасетный индекс инфоблока (таблица b_iblock_N_index), позволяющий быстро рассчитывать доступные комбинации фильтров без сложных JOIN-запросов к свойствам. При невалидности фасетного индекса или изменении элементов через ORM без обновления фасетов компонент переходит на прямой перебор базы, что резко замедляет генерацию каталога.

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

Что нужно понимать

  • 1
    Компонент catalog.smart.filter
  • 2
    Фасетный индекс и его пересчёт
  • 3
    Свойства в фильтре и производительность
  • 4
    Ограничения фасетов

Материалы

Проверь себя

Заказчик добавил свойство в умный фильтр, и страница каталога стала открываться пять секунд вместо одной. Где искать причину?

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

Чем фасетный индекс отличается от обычного индекса MySQL на таблице свойств?

Это денормализованная таблица b_iblock_N_index: одна строка на элемент, раздел (включая родительские) и значение свойства или цены, строковые значения вынесены в словарь. Фильтр и подсчёт вариантов идут по одной таблице вместо соединений со значениями свойств.

После импорта через ORM новые товары не видны в фильтре, хотя в разделе есть. Почему?

ORM инфоблоков не обновляет фасетный индекс. Классический CIBlockElement::Add() вызывает обновление сам, а после save() нужно вызвать PropertyIndex Manager::updateElementIndex() для каждого элемента.

Почему в фильтр не стоит выносить свойство «Артикул» или любое другое с уникальными значениями?

Каждое уникальное строковое значение попадает в словарь и в индекс как отдельная фасета; компонент строит по нему список вариантов на каждой странице раздела. Индекс раздувается, список бесполезен для пользователя, а разбор комбинаций в компоненте дорожает.

Не сходится?

Спросите ассистента BXMax: он знает документацию и материалы сайта по этой теме.

Знаете материал лучше?

Предложите ссылку: после проверки она появится в этом разделе.

Войти, чтобы предложить
Поделиться в Telegram
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти