• Модуль: 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
	];
}