Anzeige
Anzeige
Software & Entwicklung

Schneller finden dank Volltext-Index: Indexed Search wird aufgebohrt

Wenn es bei TYPO3 darum geht, eine Suchfunktion zu verwenden, dann ist Indexed Search erste Wahl. Der Benutzer erhält eine mächtige Suchmaschine, die sich zudem noch automatisch selber aktualisiert. Aber die Sache hat einen Haken: Je grösser die Website wird, desto langsamer findet Indexed Search die Suchergebnisse. Dieser Artikel beleuchtet das Problem – und bietet Abhilfe.

5 Min.
Artikel merken
Anzeige
Anzeige

Die Such-Extension „Indexed Search“ [1] ist schon sehr lange ein fester Bestandteil von TYPO3 – und zusammen mit TYPO3 ist auch die hauseigene Suchmaschine immer mehr gewachsen. Die Erweiterung bietet heute zahlreiche Funktionen, die über eine einfache Suchabfrage weit hinausgehen. Außerdem lässt sie sich nahtlos in nahezu jedes Design integrieren. Nicht zuletzt deshalb gehört Indexed Search zum Standardumfang fast jeder TYPO3-Website.

Inhaltsverzeichnis

Anzeige
Anzeige

Anstatt jede einzelne Seite bei jeder Abfrage separat zu durchsuchen, pflegt „Indexed Search“ einen Index, eine Art Inhaltsverzeichnis. Damit lassen sich Suchbegriffe sehr viel schneller finden. Dieses Prinzip nutzen alle modernen Suchmaschinen – man stelle sich nur einmal vor, Google würde bei jeder Suchanfrage das ganze Internet „mal eben“ durchsuchen. Der große Nachteil eines Indexes ist, dass er niemals vollständig aktuell ist, sondern immer nur den Datenbestand der letzten Indexierung kennt. Darum erscheinen insbesondere Pressemeldungen oft erst mit großer Verzögerung in den Suchresultaten.

Durch die nahtlose Integration in TYPO3 besteht dieser Nachteil bei Indexed Search nicht, denn TYPO3 benachrichtigt den Indexer automatisch, sobald eine Inhaltsseite verändert wurde und erstmals wieder aufgerufen wird.

Anzeige
Anzeige

TYPO3 enthält übrigens auch heute noch ein optionales Such-Plugin, das keine Indexierung verwendet und damit vor allem im Hinblick auf die Performance massive Nachteile mit sich bringt. Aber nicht nur darum ist Indexed Search bei TYPO3-Websites die erste Wahl.

Anzeige
Anzeige

Viele Vorzüge

Die Suche auf Basis von „Indexed Search“ bietet zahlreiche interessante Funktionen:

  • Durchsuchen von Seiteninhalten mit unterschiedlicher Gewichtung der verschiedenen HTML-Dokumentendaten (Titel, Metatags, Inhalt)
  • Durchsuchen von Dokumenten verschiedenster Produkte (z. B. Microsoft Office, OpenOffice.org, Adobe PDF)
  • Berücksichtigen von zugriffgeschützten Seitenbereichen
  • Erkennen ähnlich klingender Suchbegriffe
  • Optionales Indexieren von Inhalten auf fremden Webservern

Einzige Schwachstelle

Das große Manko bei „Indexed Search“ war aber schon seit jeher – trotz gut durchdachtem Indexkonzept – die Geschwindigkeit. Wenn eine Suchanfrage zehn Sekunden oder sogar länger dauert, dann ist das definitiv zu viel für den interessierten Besucher.

Anzeige
Anzeige

Hauptgrund für dieses Problem ist die Tatsache, dass bei jeder Suchabfrage mehrere Datenbanktabellen miteinander verknüpft werden und dabei jeweils temporäre Daten von riesiger Größe entstehen. Bei jeder Suchabfrage müssen diese Daten vollständig eingelesen, verarbeitet und gespeichert werden. Erfolgt während dieser Zeit eine zweite Suchabfrage, so müssen entsprechend doppelt soviele Daten verarbeitet werden, was die Suche entsprechend verlangsamt.

Je länger die Suche in Anspruch nimmt, desto größer ist die Chance, dass in der Zeit auch noch eine dritte Suchabfrage gestartet wird. Dieser Teufelskreis geht immer so weiter und wirkt sich rasch auch auf andere Besucher aus, die von der Suchfunktion gar keinen Gebrauch machen.

Tuning per TypoScript

Es gibt viele Möglichkeiten, um die Suchgeschwindigkeit zu verbessern. Dabei werden oft mit sehr wenig Aufwand sehr gute Verbesserungen erzielt:

Anzeige
Anzeige
  • Suchen nur nach ganzen Wörtern statt Teilwörtern: findet beispielsweise „Geburt“, aber nicht „Geburtstag“
  • Ignorieren von vererbten Zugriffsberechtigungen: findet Inhalte auf zugriffgeschützter Seite A, aber nicht auf deren Unterseite B
  • Deaktiveren der exakten Ergebniszählung: Diese Einstellung ist standardmäßig bereits aktiv. Führt bei der Zählung der gesamten Ergebnisse keine vollständige Prüfung von doppelten und überflüssigen Einträgen durch. Dadurch kann die Anzeige der Anzahl an Suchergebnissen auf jeder Ergebnisseite variieren.

Das folgende Listing fasst die benötigten TypoScript-Anpassungen zusammen:

TYPOSCRIPT – SETUP
plugin.tx_indexedsearch {
    # Suche standardmäßig nur ganze Wörter
    _DEFAULT_PI_VARS.type = 0

    # Ignoriere vererbte Seiteneigenschaften (Zugriff, etc.)
    search.skipExtendToSubpagesChecking = 1

    # Deaktiviere exakte Ergebniszählung
    search.exactCount = 0
}

Listing 1

Das Ergebnis ist je nachdem mehr oder weniger zufriedenstellend, denn all diese Anpassungen sind mit Kompromissen verbunden: Entweder es werden nur noch ganze Wörter gefunden oder Seiten aus dem geschützten Bereich werden nicht mehr berücksichtigt.

Fulltext Index

Darum bietet sich eine weitere sehr effiziente Anpassung an, die sich dadurch auszeichnet, dass sie eine bisher ungenutzte Funktion des MySQL-Datenbanksystems nutzt: Volltext-Indexe [2]. Volltext-Indexe sind MySQL-interne Indextabellen, die speziell für die Indexierung von großen Textfeldern ausgelegt sind. Dadurch wird TYPO3 ein großer Teil der Suchabfrage abgenommen und durch MySQL-interne Bordmittel [3]
[4] ersetzt. Durch den entstandenen Geschwindigkeitsgewinn dauert die Suche je nach Umfang der Website nur noch circa die Hälfte der ursprünglichen Zeit.

Anzeige
Anzeige

Der Nachteil der neuen Suchvariante besteht vor allem in der nicht vorhandenen Plattformkompatibilität. Volltext-Indexe sind eine MySQL-spezifische Eigenschaft und daher nicht DBAL-Kompatibel. DBAL (Datenbank-Abstraktions-Layer) ermöglicht den Betrieb von TYPO3 auf Datenbanksystemen jenseits von MySQL, etwa Oracle oder PostgreSQL. Aus diesem Grund wurde die Fulltext-Implementierung in TYPO3 von Beginn an als separate Extension realisiert, die sich über sogenannte Hooks in die herkömmliche Suchroutine integriert, ohne dabei die Funktionalität für alternative Datenbanksysteme zu beeinflussen.

„Indexed Search“ mit Unterstützung für Volltext-Indexe befindet sich zur Zeit noch in der Testphase. Es ist geplant, dass die Erweiterung in TYPO3 4.3 hinzugefügt wird.

Noch schneller dank Caching

Die TYPO3-Kernentwickler haben mit Hilfe eines Profilers (Programmierwerkzeug zur Analyse von Software) eine weitere Möglichkeit zur Geschwindigkeitsverbesserung gefunden. Dabei wurde erkannt, dass bei jedem Suchvorgang immer wieder der vollständige Seitenbaum geladen wird. Mit Hilfe des so genannten Treelist-Cache wird ab TYPO3 4.3 diese immer wiederkehrende Aufgabe beschleunigt und bringt so einen zusätzlichen Geschwindkeitsvorsprung.

Anzeige
Anzeige

Alternativen

Einen vollständig anderen Lösungsansatz nutzt die TYPO3-Extension „mnoGoSearch“ [5]. Sie ersetzt „Indexed Search“ vollständig und integriert stattdessen die gleichnamige Suchsoftware aus Russland. Der Vorteil von mnoGoSearch ist die hohe Geschwindigkeit, der Installationsaufwand in TYPO3 ist dabei ungefähr gleich groß wie bei „Indexed Search“. Der große Nachteil von mnoGoSearch ist aber, dass es keine zugriffgeschützten Bereiche indexieren kann. Dies ist insbesondere bei Intranet- und Extranet-Anwendungen eine wichtige Voraussetzung.

Ausblick

Wie bereits erwähnt wird TYPO3 4.3 zwei wesentliche Verbesserungen für „Indexed Search“ mitbringen: Treelist-Cache und Volltext-Indexe. Beide Verbesserungen befinden sich zur Zeit noch in der fortgeschrittenen Testphase. Der aktuelle Stand der Entwicklung ist auf der Heft-CD zu finden.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige