Tech 9. Feb. 2009

TYPO3: Indexed Search Performance unter Verdacht

Die berücktigten Performanceprobleme der Indexed Search sind mittlerweile offiziell unter “Verdacht” - in der Extensiondokumentation der Indexed Search wird dieser Aspket auch unter den “Known Problems” aufgehührt.: http://typo3.org/documentation/document-library/extension-manuals/doc_indexed_search/4.2.1/view/1/9/

Probleme mit der Suchperformance sind mir in mehreren Projekten unter gekommen. Beeinträchtigend werden diese Probleme scheinbar bei Webseite mit sehr vielen Inhalten und einen entsprechend großen Suchindex. Dies deckt sich auch mit den in der o.g. aufgeführten Punkten. Zudem scheint es so, als ob die Anzahl der maximalen Ergebnisse die Performance beeinflussen (doch die Anzahl kann man eigentlich nicht herunter setzen, wenn viele Inhalte vorliegen). In letzterem Fall stellte sich auch heraus, dass der Wortindex langsamer ist als der Volltextindex (was der Zielsetzung dieser Mechanismen entgegen läuft).

Mögliche Optimierungen der Suchperformance könnten folgende sein:

  • Umstellung des Search Modus von Wortindex zu Volltextindex. Der Effekt muss allerdings getestet werden, da theoretisch ein Wortindex schneller sein sollte. Das Problem ist hier die unnötige Komplexität des SQL Query, welches nach dem fetchen der Seiten, all diese nocheinmal per “uid IN (…)” schickt. Bei vielen tausend Inhalten ist dies nicht tragbar. Der Volltextindex arbeit in der Query-Struktur performanter.
  • Auf Datenbankebene sollten mySQL-Fulltextindizies auf die Tabellen/Spalten “index_fulltext.fulltext” und “index_words.baseword” gesetzt sein. Möglicherweise ist dies in einem langsamen System nicht der Fall. Nach einigen Forenbeiträgen der Community sind hierdurch Zeitreduzierungen auf ca. 10% erreicht werden. Die Prüfung lohnt sich also.
  • Die Indexed Search nutzt auf Kompatibilitätsgründen nicht die Fulltext-Funktionen von mySQL. Voraussichtlich wird sich das auch nicht ändern. Theoretisch ist hier ein Patch des Query in der Klasse “class.tx_indexedsearch.php” denkbar. Solch ein Patch ist aber in keinem Fall sauber bringt entsprechende Probleme mit sich.
  • Man Implementiert eine alternative Suche, sei es eine Google Suche (was aber selten Sinn macht und spätestens bei geschützten Inhalten nicht mehr geht) oder z.B. Lucene. Für letztere Variante gibt es auch die Extension “PowerSearch Index Lucene” - diese habe ich aber noch nicht ausprobiert. Lucene als Engine ist vermutlich eine sehr gute Lösung - die Integration in TYPO3 ist hier der Knackpunkt.