Solr Einrichtung in TYPO3 | Anleitung

Solr Einrichtung in TYPO3

Betreiber großer TYPO3 Installationen haben häufig Probleme, eine performante Suchfunktion zu realisieren. Je weiter der Inhalt der Installation wächst, desto langsamer wird die TYPO3-eigene Suchfunktion, auch indexed_search bildet da keine Ausnahme.

Mit Solr nutzt man die Vorteile einer Onlinesuche so effektiv wie möglich! Die Verwendung von Solr verschafft aber nicht nur den Mehrwert einer schnellen Online-Suche, denn die folgenden modernen Suchfunktionen sind bereits in den Erweiterungen implementiert und können entsprechend konfiguriert werden:

  • Suchvorschläge (Bekannt durch Google Suggest)
  • Rechtschreibkorrektur (“Meinten Sie… ?”)
  • Synonymsuche
  • Facettierung in den Suchergebnissen

Eine Lösung für solche Probleme bietet Apache Solr – die schnelle Suche für umfangreiche Installationen. Entwachsen aus dem Lucene Projekt der Apache Foundation bietet diese „Enterprise Search Engine“ ein hohes Maß an Performance beim Durchsuchen großer Mengen von Daten. Der entscheidende Unterschied zur herkömmlichen Suche liegt dabei in der Art und Weise, wie die Daten vorgehalten werden. Statt die Datenbank direkt zu durchsuchen, hält Solr die einmal indizierten Daten permanent im Arbeitsspeicher der Solr Cores vor. Bei einer Anfrage kann hierauf deutlich schneller zugegriffen werden als auf den Inhalt einer Datenbank oder des Dateisystems.
Neben Volltext- oder Facettensuche ist Solr außerdem in der Lage, Rich-Dokumente, wie Word- oder PDF Dateien, zu indizieren. Weiterhin bietet Solr Hit Highlighting, strukturierte oder textuelle Suche und viele andere Features.
Dieser Blog Beitrag beschreibt im folgenden die Integration der Index-Suche mit Solr (Extension Version 2.8.2) in eine bestehende TYPO3 Installation und umfasst alle Arbeitsschritte vom Anlegen des Solr Kerns bis hin zur Einrichtung der TYPO3 Extension.

1. Einen neuen Solr Kern anlegen

Das gebuchte Solr Paket steht nach einem Login ins Kundencenter zur Verfügung und enthält bereits einen Kern (default), der zur Einrichtung der Suche mit TYPO3 zunächst gelöscht werden kann. Anschließend wird über die Schaltfläche „Kern hinzufügen“ ein neuer Solr Kern erzeugt.

apache solr hosting

Name und Notiz sind beim Anlegen des Kerns frei wählbar und dienen lediglich der Übersicht, sie sollten jedoch keine Leerzeichen oder Umlaute enthalten. Als Konfigurationsvorlage wird „TYPO3-Extension Solr“ in der aktuellsten Version verwendet. Die Sprache bleibt, soweit nicht anders erforderlich, bei Deutsch und als Arbeitsspeicher wird der gewünschte Wert zugeteilt, der dem Kern zur Verfügung stehen soll. Hierbei ist zu beachten, dass nur Seiten, die sich im Solr Arbeitsspeicher befinden, bei einer Suche schnell ausgeliefert werden können. Deswegen ist es ratsam, sich bei der Zuweisung des Arbeitsspeichers an der Seitenanzahl der TYPO3 Installation zu orientieren, ein Schätzwert von 0,25 MB pro Seite sollte ein akzeptables Resultat liefern. Solr erstellt ein Ranking nach Frequentierung der Seiten und legt so fest, welche Seiten im Arbeitsspeicher vorgehalten werden und welche ggf. auf die Festplatte ausgelagert werden, wo kein schneller Zugriff mehr möglich ist.
Nach Eingabe des zugewiesenen Arbeitsspeichers wird der Dialog mit „Speichern“ beendet.

2. TYPO3 und die Solr Extension konfigurieren

Zunächst muss überprüft werden, ob die folgenden Suchmarker im Template der Website (nicht im TYPO3 Template Modul) vorhanden sind:

<!--TYPO3SEARCH_begin-->
<!--TYPO3SEARCH_end-->

Dies ist am einfachsten über die „Seitenquelltext anzeigen“-Funktion des Browsers und die Verwendung der Suche möglich. Sollten die Marker nicht existieren, werden diese Marker im Template so gesetzt, dass sie den gewünschten Content umschließen.

Anschließend wird die TYPO3 Solr Extension, die für die Suche benötigt wird, über den TYPO3 Extension Manager installiert. Der Extension Key dieser Extension lautet „solr“.

solr typo3 extension

Als nächstes müssen die Verbindungsdaten zum Solr Kern im TYPO3 Template-Modul in den Konstanten hinterlegt werden.
Hierzu wird folgendes Typoskript verwendet, das um die jeweiligen individuellen Daten ergänzt wird:

plugin.tx_solr.solr.scheme = http
plugin.tx_solr.solr.host = solrXXXX:PASSWORT@solr5XXX.solr-hosting.info
plugin.tx_solr.solr.port = 80
plugin.tx_solr.solr.path = /Name_des_Kerns/

(Als Platzhalter dienen hier alle „X“, „PASSWORT“ sowie „Name_des_Kerns“)

Anschließend sollte überprüft werden, ob die Indexierung der Seiten aktiviert ist. Dies lässt sich unter „Templates -> Setup“ überprüfen. Sollte dies nicht der Fall sein, kann das Typoskript Template um den Eintrag page.config.index_enable = 1 erweitert werden, um die Indexierung zu aktivieren.
Diese Angabe sollte sicherheitshalber ans Ende des Templates geschrieben werden, da TYPO3 untere Einträge höher priorisiert als obere.

Als nächstes müssen die notwendigen Suchmarker aktiviert werden. Hierzu wird die Root-Seite ausgewählt, das Menü „Template -> Vollständigen Template-Datensatz Bearbeiten -> Optionen“ aufgerufen, und der Haken bei „Wurzelebene“ gesetzt.

konfiguration von solr

Unter dem Reiter „Enthält“ wird anschließend das statische Template „Apache Solr (solr)“ hinzugefügt.

übersicht der konfiguration von solr

Hiernach wird überprüft, ob die Base URL in „Template -> Setup“ hinterlegt ist. Sollte dies nicht der Fall sein, kann diese mit config.BaseURL = gesetzt werden, wobei natürlich die zur Website gehörige Domain verwendet wird.
Des Weiteren muss der Domänen-Record auf der Root-Seite angepasst werden. Dieser sollte der Base URL entsprechen, das „http://“ und der abschließende „/“ darf hier jedoch NICHT enthalten sein. Sollte dieser Record nicht existieren, kann er auf der Root-Seite unter „Liste -> Neuer Datensatz -> Domäne“ hinzugefügt werden.

einstellungen von solr

Anschließend wird die Solr Verbindung initialisiert. Dies geschieht über den Button „Initialize Solr connections“ im „Cache Löschen“ Menü. Danach muss der TYPO3 Cache geleert werden.

solr cache connections

Ob die Verbindung korrekt aufgebaut werden konnte, lässt sich nun unter dem Punkt „Reports -> Statusbericht“ überprüfen. Die Informationen über die Solr Konfiguration befinden sich meist im unteren Teil.

statusbericht von solr

Als nächstes wird im Planer ein neuer Task der Klasse „Index Queue Worker“ benötigt, der die Seiten indiziert.
Der Typ ist „wiederkehrend“, die Häufigkeit kann entsprechend des im Tarif verfügbaren Cronjob-Intervalls gesetzt werden und sollte geringer sein als die Häufigkeit des „Commit Solr Index“. Die Anzahl der zu indizierenden Seiten sollte mit Blick auf das vorhandene Hosting Paket gewählt werden. Je mehr Seiten auf einmal indiziert werden, desto größer ist die Belastung für das Hostingpaket.

geplante tasks

Zum Test können nun die Tasks „Index Queue Worker“ und „Commit Solr Index“ nacheinander manuell im Planer ausgeführt werden. Ist die Einrichtung korrekt erfolgt, wird die Ausführung mit einer grünen Box quittiert, der Index Queue Worker zeigt außerdem einen „Progress“ in Prozent an.

commit soir index

Kommentare

  1. René Nitzsche am
    Also weitere Alternative möchte ich auf die Extension mksearch verweisen. Diese verfolgt bei der einen anderen Ansatz, der etwas aufwendiger in der Einrichtung ist, aber meiner Ansicht nach bessere Suchergebnisse erzielt. Beim mksearch wird die Seite nicht per Crawler abgesucht. Statt dessen werden direkt die Roh-Datensätze nach der Bearbeitung indexiert. Wenn man also einen Newsbeitrag schreibt, dann wird direkt dieser Datensatz von mksearch analysiert und an Solr zur Indexierung übergeben. In mksearch übernehmen die Verarbeitung die sogenannten Indexer. Und natürlich ist das System so gestaltet, daß man beliebige weitere Indexer integrieren kann.
    Auch eine Integration von Tika und damit die Möglichkeit der Integration von Binär-Dokumenten ist vorhanden. Derzeit unterstützt mksearch die LTS-Version 6.2, 7.6 und 8.7.
    Link: https://github.com/DMKEBUSINESSGMBH/typo3-mksearch
    Antworten
  2. René Nitzsche am
    Also weitere Alternative möchte ich auf die Extension mksearch verweisen. Diese verfolgt bei der einen anderen Ansatz, der etwas aufwendiger in der Einrichtung ist, aber meiner Ansicht nach bessere Suchergebnisse erzielt. Beim mksearch wird die Seite nicht per Crawler abgesucht. Statt dessen werden direkt die Roh-Datensätze nach der Bearbeitung indexiert. Wenn man also einen Newsbeitrag schreibt, dann wird direkt dieser Datensatz von mksearch analysiert und an Solr zur Indexierung übergeben. In mksearch übernehmen die Verarbeitung die sogenannten Indexer. Und natürlich ist das System so gestaltet, daß man beliebige weitere Indexer integrieren kann.
    Auch eine Integration von Tika und damit die Möglichkeit der Integration von Binär-Dokumenten ist vorhanden. Derzeit unterstützt mksearch die LTS-Version 6.2, 7.6 und 8.7.
    Link: https://github.com/DMKEBUSINESSGMBH/typo3-mksearch
    Antworten
  3. Armin am
    "Neben Volltext- oder Facettensuche ist Solr außerdem in der Lage, Rich-Dokumente, wie Word- oder PDF Dateien, zu indizieren" Das geht aber nur mit der extension solrfal, die kostenpflichtig ist, oder?
    Antworten
    1. Hannes Bochmann am
      Hallo Armin,

      du könntest für die komplette Suche auch die Extension mksearch (https://github.com/DMKEBUSINESSGMBH/typo3-mksearch, http://typo3.org/extensions/repository/view/mksearch) nutzen. Diese bietet die gewünschten Features, wie Rich-Dokumente durchsuchen, kostenlos out of the box.
      Antworten
    2. Kristina Dahl am
      Hallo Armin!

      Vielen Dank für deine Rückfrage. :) Da hast du Recht. Du benötigst solrfal und Tika.

      Viele Grüße

      Kristina
      Antworten
  4. Dennis Laudenbach am

    Das Problem mit dem Task „Index Queue Worker“ lag am fehlenden Backend User „_cli_scheduler“. Hier könnte man ggf. noch die Beschreibung erweitern!

    Antworten
  5. Dennis Laudenbach am

    Sehr gute Beschreibung!
    Es hat auch alles wunderbar funktioniert…bis auf:

    – Index Queue Worker
    Den Task habe ich manuell im Planer ausgeführt, erhalte auch eine grüne Box mit dem Inhalt „Executed: Index Queue Worker (solr)“ …leider bleibt der „Progress“ aber bei 0% stehen.

    (Status war bisher grau – Scheduled und gelb – Late)

    – Commit Solr Index
    Der Task wurde gar nicht beschrieben und ich finde auch keine entsprechende Möglichkeit diesen zu planen.

    > Gehostet wird das ganze natürlich bei Mittwald ;)

    Antworten

Kommentar hinzufügen

    Hilfe & Kontakt

    Support-Hotline
    +49 (0) 800/440-3000

    E-Mail
    support@mittwald.de