Vorheriger Artikel Nächster Artikel

Workshop: Die Indexed-Search-Alternative Lucene in TYPO3 integrieren

Aus dem
t3n Magazin Nr. 17

09/2009 - 11/2009

Die in integrierte Such-Engine Indexed Search ist für viele Websites ausreichend. Doch bei großen Datenmengen und komplexen Suchabfragen geht die Indexed Search in die Knie. Das Apache-Projekt Lucene ist eine leistungsfähige Alternative, die deutlich mehr Geschwindigkeit und Funktionalität verspricht. Dieser Workshop zeigt, wie man Lucene in TYPO3 integriert.

Die TYPO3-eigene Suche Indexed Search verrichtet in vielen Websites gute Arbeit und bietet eine Volltextsuche mit verschiedenen Konfigurationsmöglichkeiten und Funktionen. Bei Websites mit sehr vielen Inhalten und hohen Anforderungen an die Suche gibt es allerdings zwei Nachteile: Suchanfragen dauern sehr lange und spezielle Funktionen, etwa eine Suche nach Zeiträumen oder ähnlichen Schreibweisen, lassen sich nur bedingt umsetzen.

Ein Testszenario macht die Performanceschwäche deutlich. Die Basis bildet eine TYPO3-Website mit rund 11.000 Inhaltsseiten, gefüllt mit zufällig generiertem Inhalt. Das Ergebnis: Die Bearbeitung von Such­anfragen mit einem Begriff dauert auf einem durch­schnittlichen Entwicklungsserver zwischen 30 Sekunden und zweieinhalb Minuten. Um es vorwegzunehmen: Die gleiche Anfrage erledigt Lucene in ein bis zwei Sekunden.

Lucene

Lucene ist eine Hochleistungs-Volltextsuchmaschine von Apache [1] und kommt aus der Java-Welt, in Java-Projekten ist sie entsprechend häufig zu finden. Sie zeichnet sich durch eine eigene Art der Indizierung und einen großen Funktionsumfang aus. Lucene nutzt keine Datenbank, sondern das Filesystem und bietet so eine hohe Skalierbarkeit. Funktionen wie eine phonetische Suche, Suche nach ähnlichen Schreibweisen oder die Nutzung von „Boost Factors“ zur Priorisierung von einzelnen Attributen für ein Suchranking machen die Suchmaschine so attraktiv.

Mit „Zend_Search_Lucene“ existiert eine PHP-Variante von Lucene, die Teil des Zend Frameworks ist [2]. Aufbauend auf Lucene gibt es den Suchserver Solr [3], der die Funktionalitäten in einem per Web Services ansteuerbaren Server kapselt.

Möglichkeiten zur Integration in TYPO3

Die bisher einzige frei verfügbare TYPO3-Extension, die Lucene in TYPO3 integriert, heißt PowerSearch [4]. Sie nutzt das Zend Framework als Extension [5], ist also vollständig PHP-basiert. Zur PowerSearch-Erweiterung gehören noch zwei weitere Extensions („PowerSearch Index Lucene“ und „PowerSearch UI Default“), alle drei lassen sich anhand der Dokumentation recht einfach installieren. Die Extensions stellen lediglich das Grundsystem ohne erweiterte Funktionen bereit und indizieren ausschließlich „tt_content“. Die Indizierung erledigt ein Cronjob über die Datenbank, was impliziert, dass für jede zu indizierende Tabelle neuer Quellcode geschrieben werden muss. Hierfür ist die Architektur allerdings auch ausgelegt.

Für den Suchserver Solr ist eine Extension in Arbeit [6]. Solr ist insbesondere dann sinnvoll, wenn eine technologieübergreifende Lösung, die Original-Java-Lucene oder die neueste Version benötigt werden. Die Extension wird nach Angaben der Entwickler bei der d.k.d GmbH noch in diesem Jahr im TER verfügbar sein. Für den Einsatz ist mindestens ein Tomcat-Server erforderlich.

Integration über eine eigene Extension

Sieht man sich die API der Zend Search genauer an, gehört zur Nutzung von Lucene nicht viel dazu. Letztlich müssen Inhalte als Lucene-Dokumente indiziert werden. Anschließend können sie mit einer Suchabfrage gefunden werden.

Die Indizierung ist der aufwändigste Teil. Zunächst müssen Sie eine Entscheidung für ein Indizierungskonzept treffen. Powersearch indiziert beispielsweise anhand von Datenbankabfragen auf die TYPO3-Tabellen. Alle bekannten Ansätze der Indexed Search sind damit hinfällig. Die Autoren haben sich stattdessen für eine Indizierung anhand des Seiten­abrufs und des ausgelieferten HTML-Quelltexts ent­schieden, da sich dieser Ansatz der Indexed Search in vielen Projekten bewährt hat. Der wesentliche Vorteil ist, dass der Indexer sich nicht um die Herkunft der Daten kümmern muss – er nimmt alles, was über das Frontend erreicht werden kann und mit den bekannten Begin/End-Kommentaren markiert ist. Das kann auch Inhalt aus Plugins sein. Zusätzliche Attribute aus den Seiteneigenschaften können hierüber aber trotzdem verwendet werden.

Hänge dich jetzt an unsere Facebook-Seite und sichere dir deinen #Wissensvorsprung!
t3n gefällt mir!
Vorheriger Artikel Zurück zur Startseite Nächster Artikel
3 Antworten
  1. von Tim Neugebauer am 04.02.2010 (12:16 Uhr)

    Die Nachteile bestehender Lösungen haben wir auch im Projektgeschäft festgestellt. Im Rahmen einiger größerer Entwicklungsprojekte haben wir ebenfalls Lucene im Rahmen des Zend Frameworks als TYPO3-Extension nutzbar gemacht, sowie diese so konzipiert, dass auch andere Such-Services implementiert werden können. An einer Solr-basierten Lösung wird im Rahmen eines aktuellen Kundenprojektes derzeit gearbeitet.

    Für die bestehende Lösung existieren bereits Indexer für tt_content, tt_news und einige andere Content-Typen.

    Weitere Informationen finden sich auf unserer Website.

    Grüße,
    Tim.

    Antworten Teilen
  2. von Jpsy am 18.10.2012 (09:14 Uhr)

    In diesem Blogposting ...
    http://www.ibu.de/Comparison_of_Typo3_Search_Solutions
    ... kommt die Lucene-Lösung garnicht so gut weg. Es wird behauptet, dass der aufgeblähte Memory-Footprints von PHP+TYPO3+Java+Lucene zu Problemen führen kann. Besonders Maschinen mit viel (!) RAM seien gefährdet, da der Engpass laut Bericht in den Speicherbelegungstabellen im beschränkten LowMemory des Linux-Kernels entsteht ("OOM-Killer"-Effekt).
    Kann jemand das bestätigen oder wiederlegen? Über die im obigen Posting favorisierte Lösung (IB4Typo3) kann ich nichts aussagekräftiges finden und der Rest der Website scheint ziemlich tot zu sein.

    Antworten Teilen
  3. von Jpsy am 18.10.2012 (12:03 Uhr)

    Nachtrag:
    Ich denke, der topaktuelle t3n-Artikel über TYPO3 und Solr beantwortet meine obige Frage:
    http://t3n.de/magazin/typo3-extension-apaches-solr-server-typo3-umgebung-nutzen-229610/
    Das scheint mir der moderne Weg zum Einsatz von Lucene unter TYPO3 zu sein. Der Solr-Server läßt sich in Hochlast-Szenarien sicher auch gut auf eine eigene Maschine auslagern.

    Antworten Teilen
Deine Meinung

Bitte melde dich an!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Aktuelles aus dem Bereich TYPO3
TYPO3 CMS 7.4: Besserer Upload und schöneres Backend
TYPO3 CMS 7.4: Besserer Upload und schöneres Backend

Die Entwickler des TYPO3 CMS haben wie geplant den neuesten Sprint-Release TYPO3 CMS 7.4 veröffentlicht. Der Fokus lag bei der neuen Version auf Verbesserungen des Backends. » weiterlesen

Getrennte Wege: Neos spaltet sich von TYPO3-Association ab
Getrennte Wege: Neos spaltet sich von TYPO3-Association ab

Das Neos-Team wird sich von der TYPO3-Association abspalten. Durch den Schritt soll sich das Team besser auf die eigene Produktstrategie konzentrieren können. » weiterlesen

TYPO3-Developer-Days 2015: Besondere Location zum 10-jährigen Jubiläum [Sponsored Event + Gewinnspiel]
TYPO3-Developer-Days 2015: Besondere Location zum 10-jährigen Jubiläum [Sponsored Event + Gewinnspiel]

Mitte Juli finden in Nürnberg die diesjährigen TYPO3-Developer-Days 2015 statt. Der Treffpunkt für Entwickler bietet Raum und Zeit für Austausch untereinander. » weiterlesen

Alle Hefte Jetzt abonnieren – für nur 35 €

Kennst Du schon unser t3n Magazin?

t3n 40 jetzt kostenfrei probelesen! Alle Inhalte des t3n Magazins Diesen Hinweis verbergen