eZ\Publish\Core\Search\Legacy\Content\Indexer::createSearchIndex PHP Method

createSearchIndex() public method

Create search engine index.
public createSearchIndex ( Symfony\Component\Console\Output\OutputInterface $output, integer $iterationCount, boolean $commit )
$output Symfony\Component\Console\Output\OutputInterface
$iterationCount integer
$commit boolean commit changes after each iteration
    public function createSearchIndex(OutputInterface $output, $iterationCount, $commit)
    {
        $output->writeln('Creating Legacy Search Engine Index...');
        if (!$this->searchHandler instanceof SearchHandler) {
            throw new RuntimeException(sprintf('Expected to find an instance of %s, but found %s', SearchHandler::class, get_class($this->searchHandler)));
        }
        $stmt = $this->getContentDbFieldsStmt(['count(id)']);
        $totalCount = intval($stmt->fetchColumn());
        $stmt = $this->getContentDbFieldsStmt(['id', 'current_version']);
        $this->searchHandler->purgeIndex();
        $progress = new ProgressBar($output);
        $progress->start($totalCount);
        $i = 0;
        do {
            $contentObjects = [];
            for ($k = 0; $k <= $iterationCount; ++$k) {
                if (!($row = $stmt->fetch(PDO::FETCH_ASSOC))) {
                    break;
                }
                try {
                    $contentObjects[] = $this->persistenceHandler->contentHandler()->load($row['id'], $row['current_version']);
                } catch (NotFoundException $e) {
                    $this->logWarning($progress, "Could not load current version of Content with id {$row['id']}, so skipped for indexing. Full exception: " . $e->getMessage());
                }
            }
            foreach ($contentObjects as $content) {
                try {
                    $this->searchHandler->indexContent($content);
                } catch (NotFoundException $e) {
                    // Ignore content objects that have some sort of missing data on it
                    $this->logWarning($progress, 'Content with id ' . $content->versionInfo->id . ' has missing data, so skipped for indexing. Full exception: ' . $e->getMessage());
                }
            }
            $progress->advance($k);
        } while (($i += $iterationCount) < $totalCount);
        $progress->finish();
        $output->writeln('');
        $output->writeln('Finished creating Legacy Search Engine Index');
    }