Skip to content
mFilter
mFilter
Фасетная фильтрация для MODX 3 с поддержкой SEO URL
  1. Компоненты
  2. mFilter
  3. Интерфейс админки
  4. Обслуживание

Обслуживание

Системные операции для поддержания производительности фильтров. Большинство задач выполняется автоматически — здесь они для ручного запуска и диагностики.

Структура вкладки

┌────────────────────────────────────────────────┐
│  Индекс фасетов          [Активен]             │
│  ┌──────────────────────────────────────┐      │
│  │  Денормализованный индекс значений    │      │
│  │  фильтров. Заменяет тяжёлые JOIN'ы.   │      │
│  │                                        │      │
│  │  450 320  текстовых записей            │      │
│  │   12 845  числовых записей             │      │
│  │  10:32    последняя пересборка         │      │
│  │                                        │      │
│  │  [Пересобрать сейчас]  [Через Scheduler]│     │
│  └──────────────────────────────────────┘      │
│                                                │
│  Кэш данных фильтров           [142 записей]   │
│  ┌──────────────────────────────────────┐      │
│  │  Промежуточные результаты вычислений. │      │
│  │  Очищается автоматически.             │      │
│  │                                        │      │
│  │  [Очистить кэш]                        │      │
│  └──────────────────────────────────────┘      │
│                                                │
│  ▶ Прогрев baseIds (устаревает)   [Legacy]     │
└────────────────────────────────────────────────┘

Индекс фасетов

Главный блок вкладки. Денормализованный индекс значений фильтров (color, size, price, weight и т.п.) — заменяет JOIN'ы по таблицам товаров и опций при каждой фильтрации. Фильтры начинают работать в 5–10 раз быстрее на каталогах от 10 000 товаров.

Когда индекс обновляется автоматически

  • При сохранении набора фильтров — пересобираются только изменённые ключи
  • При upgrade пакета — задача mfl_rebuild_facet_index ставится в очередь Scheduler
  • При нажатии кнопки «Переиндексация» в шапке админки

Когда нужна ручная пересборка

  • После массового импорта товаров (ImportX, REST-импорт, прямой SQL)
  • После прямых правок цен/опций в БД, минующих API MS3
  • После изменения published / deleted статусов через bulk-операции
  • При обнаружении расхождений между фильтрами и реальными товарами

Кнопки

КнопкаКогда использовать
Пересобрать сейчасМаленький каталог (до 30k товаров) — займёт секунды
Через SchedulerБольшой каталог (50k+) или нет уверенности во времени выполнения. Появляется только если установлен Scheduler

При выборе «Через Scheduler» сборка запускается на ближайшем тике cron — обычно в течение минуты. Параллельно сайт работает на fallback'е, простоев нет.

Статусы

СтатусЧто означает
Активен (зелёный)Индекс построен и используется
В очереди Scheduler (синий)Сборка запланирована, выполнится на ближайшем тике
Не построен (жёлтый)Индекс пустой. Нажмите «Построить сейчас» — без него фильтры работают по старому медленному пути

Метрики

МетрикаОписание
Текстовых записейКол-во строк в mfl_facet_index_text (бренды, цвета, размеры)
Числовых записейКол-во строк в mfl_facet_index_num (price, weight)
Последняя пересборкаДата и время последнего полного rebuild

Кэш данных фильтров

Промежуточные результаты вычислений — suggestions, фильтрованные ID. Очищается автоматически при сохранении товара или конфигурации фильтров.

Очищать вручную нужно только при отладке расхождений данных. В нормальной работе кэш не трогают.

Прогрев baseIds (Legacy)

Старая система прогрева — заранее вычисляет набор ID товаров для страниц.

После стабилизации индекса фасетов будет упрощена или удалена. Сейчас ещё используется для AJAX-режима получения baseIds. Не отключайте, если не уверены.

Подробнее: Прогрев кэша.

Кнопка «Переиндексация» в шапке

Единая кнопка в правом верхнем углу админки запускает полную переиндексацию:

  1. Слаги (alias-ы значений фильтров)
  2. TV-индекс
  3. Индекс фасетов

Полезна после массовых изменений в каталоге.

Подсветка:

  • Серая — индекс актуален, при необходимости можно перезапустить
  • Жёлтая — индекс ещё не построен, нажмите для первой сборки

Если установлен Scheduler — сборка индекса фасетов уходит в фон. Без Scheduler — выполняется синхронно, нужно дождаться.

Диагностика

Индекс пустой / suggestion'ы возвращают 0

  1. Проверить статус индекса на вкладке Обслуживание
  2. Если «Не построен» — нажать «Построить сейчас»
  3. После сборки проверить количество записей — должно быть > 0

После импорта товары не появляются в фильтрах

Индекс не обновляется автоматически при прямых SQL-вставках. Нужна ручная пересборка через «Пересобрать сейчас».

Долгая сборка зависает

Если кнопка «Пересобрать сейчас» не возвращается на каталогах 100k+:

  1. Установите Scheduler
  2. Используйте кнопку «Через Scheduler» — сборка уйдёт в фон без HTTP-таймаута

Логи

Сборка пишет в лог MODX:

[mFilter] Facet index rebuild started
[mFilter] Facet index: indexed 145320 rows for 'color'
[mFilter] Facet index: indexed 87234 rows for 'size'
[mFilter] Facet index rebuild done: 8 filters, 450320 text rows, 12845 num rows, 8432ms

API статуса

GET /assets/components/mfilter/connector.php?action=maintenance/status (manager-only)

json
{
  "facet_index": {
    "is_built": true,
    "is_pending": false,
    "needs_attention": false,
    "text_rows": 450320,
    "num_rows": 12845,
    "total_rows": 463165,
    "last_built_at": 1730633520
  },
  "counts": {
    "filter_sets": 3,
    "slugs": 1450,
    "word_forms": 87,
    "warmup_configs": 2,
    "cache_records": 142
  },
  "dependencies": {
    "minishop3": true,
    "msearch": false,
    "scheduler": true
  }
}

Используется фронтом админки для отображения статус-бара. Можно использовать в кастомных интеграциях для мониторинга.

Системные таблицы

ТаблицаНазначение
mfl_facet_index_textТекстовые значения фильтров
mfl_facet_index_numЧисловые значения фильтров
mfl_request_runs / mfl_request_idsРегистрация больших списков ID для JOIN
mfl_cacheКэш результатов фильтрации

Подробнее о структуре: Модели и БД.