FilterIndexGenerator

Описание

Класс для генерации индекса фильтруемых полей сущностей (объектов и страниц) системы. Собранный индекс хранится в отдельной таблице.

Варианты использования:

  • Создать индекс для сущностей определенного иерархического типа:

    
    $indexGenerator = new FilterIndexGenerator(56, 'objects');
    $indexGenerator->run();
    
    
  • Создать индекс для страниц с ограничением по иерархии:

    
    $indexGenerator = new FilterIndexGenerator(56, 'pages');
    $indexGenerator->setHierarchyCondition(4, 100);
    $indexGenerator->run();
    
    
  • Создать индекс в несколько итераций:

    
    $indexGenerator = new FilterIndexGenerator(56, 'pages');
    $indexGenerator->setLimit(50);
    for ($i = 0; !$indexGenerator->isDone(); $i++) {
        $indexGenerator->run();
    }
    
    
  • __construct() — Конструктор класса
  • setLimit() — Устанавливает ограничени на количество индексируемых объектов
  • run() — Запускает процесс индексации и возвращает количество проиндексированных сущностей
  • getHierarchyTypeId() — Возвращает идентификатор иерархического типа, к которому принадлежат индексируемые сущности
  • getEntitiesType() — Возвращает тип индексируемых сущностей (pages|objects)
  • flushIndex() — Очищает таблицу с индексом, возвращает результат операции
  • getTableName() — Возвращает имя таблицы в бд, которая будет хранить индекс фильтров
  • getFilteredFields() — Возвращает объекты фильтруемых полей, данные которых составляют индекс
  • getSystemFields() — Возвращает имена системных полей индекса
  • isDone() — Завершен ли процесс индексации
  • setHierarchyCondition() — Устанавливает ограничение на индексируемые сущности по иерархии
  • updateEntityIndex() — Создает или обновляет индекс для сущности
  • dropEntityIndex() — Удаляет индекс сущности
  • dropTable() — Удаляет таблицу с индексом
  • deleteStoredOffset() — Удаляет кэш со смещением выборки индексируемых сущностей
  • deleteSavedFilteredFields() — Удаляет файл с кешем фильтруемых полей