For coders TYPO3 Tech Corner

TYPO3: SOLR-Index in PHP manuell aktualisieren?

TYPO3: SOLR-Index in PHP manuell aktualisieren?

Im ersten Schritt löschen wir einen vorhandenen Eintrag im SOLR Index mit Hilfe des Tabellennamens und des Identifiers:

// Delete SOLR entry $garbageCollector = GeneralUtility::makeInstance(GarbageHandler::class); $garbageCollector->collectGarbage('tx_ext_domain_model_product', $product->getUid());

Nach dem Import können wir einen neuen Eintrag in der Indexqueue Tabelle der SOLR-Extension anlegen:

// Add to queue $queryBuilder = DatabaseUtility::getQueryBuilderForTable('tx_solr_indexqueue_item'); $queryBuilder ->insert('tx_solr_indexqueue_item') ->values([ 'root' => 1, 'item_type' => 'tx_ext_domain_model_product', 'item_uid' => $product->getUid(), 'indexing_configuration' => 'products', 'changed' => time(), 'errors' => '', ]) ->execute();

Erklärung: root => PID der Site-Config, item_type: Tabellenname, item_uid: Identifier des Datensatzes, indexing_configuration: Name der Indexkonfiguration (siehe TypoScript)

Hinweis: Wenn ihr euch fragt, warum wir die Daten direkt in die Tabelle eintragen und keine fertige Funktion der SOLR-Exension nutzen: Es gibt in der Klasse \ApacheSolrForTypo3\Solr\Domain\Index\Queue\QueueItemRepository zwar die Funktion add(), hier gibt es aber den Hinweis, dass diese nur für interne Zwecke da ist und nicht von außen genutzt werden sollte.

Zurück

Kennst du das: Immer nur schnell schnell?

Wie wäre es einmal mit Zeit und Respekt für Codequalität? Arbeiten im Team? Automatisierte Tests?

Komm zu uns