- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/search/reindex/extendedindex.php
- Класс: BitrixDiskSearchReindexExtendedIndex
- Вызов: ExtendedIndex::processStep
protected function processStep($lastId)
{
$indexStatus = ObjectExtendedIndexTable::STATUS_EXTENDED;
$parameters = [
'select' => ['*'],
'filter' => [
'>ID' => $lastId,
'WITHOUT_FULLTEXT' => true,
],
'order' => ['ID' => 'ASC'],
'offset' => 0,
'limit' => $this->getPortionSize(),
'runtime' => [
new ExpressionField('WITHOUT_FULLTEXT',
"CASE WHEN NOT EXISTS(SELECT 'x' FROM b_disk_object_extended_index WHERE OBJECT_ID = %1$s AND STATUS = {$indexStatus}) THEN 1 ELSE 0 END",
['ID']),
]
];
$objectRows = ObjectTable::getList($parameters);
$indexManager = Driver::getInstance()->getIndexManager();
$indexManager
->disableUsingSearchModule()
;
$lastId = null;
$steps = 0;
foreach ($objectRows as $objectRow)
{
$object = BaseObject::buildFromArray($objectRow);
if ($object instanceof Folder)
{
$indexManager->indexFolderWithExtendedIndex($object);
}
elseif ($object instanceof File)
{
$indexManager->indexFileWithExtendedIndex($object);
}
$lastId = $objectRow['ID'];
$steps++;
}
$indexManager->initDefaultConfiguration();
return [
'lastId' => $lastId,
'steps' => $steps
];
}