Solr Einrichtung in TYPO3
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.
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“.
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:PASSWORTsolrXXX.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.
Unter dem Reiter „Enthält“ wird anschließend das statische Template „Apache Solr (solr)“ hinzugefügt.
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.
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.
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.
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.
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.
Kommentare
wie werden denn Tables von anderen Extensions indiziert? Habe versucht, das news Beispiel zu indizieren, leider ohne Erfolg:
news = 1
news {
table = tx_news_domain_model_news
fields {
abstract = teaser
author = author
authorEmail_stringS = author_email
title = title
content = SOLR_CONTENT
content {
cObject = COA
cObject {
10 = TEXT
10 {
field = bodytext
noTrimWrap = || |
}
}
}
category_stringM = SOLR_RELATION
category_stringM {
localField = categories
multiValue = 1
}
keywords = SOLR_MULTIVALUE
keywords {
field = keywords
}
tags_stringM = SOLR_RELATION
tags_stringM {
localField = tags
multiValue = 1
}
url = TEXT
url {
typolink.parameter = {$plugin.tx_news.settings.detailPid}
typolink.additionalParams = &tx_news_pi1[controller]=News&
tx_news_pi1[action]=detail&tx_news_pi1[news]={field:uid}
typolink.additionalParams.insertData = 1
typolink.useCacheHash = 1
typolink.returnLast = url
}
}
attachments {
fields = related_files
}
}
}
plugin.tx_solr.logging.indexing.queue.news = 1
hab die erste Zeile vergessen:
plugin.tx_solr.index.queue {
schau doch mal hier: https://docs.typo3.org/typo3cms/extensions/solr/stable/Backend/ResultsPlugin.html
Liebe Grüße
Kristina
Danke für die tolle Anleitung.
Kleine Frage von meiner Seite:
Sollte die Zeile
plugin.tx_solr.solr.host = solrXXXX:PASSWORTsolr5XXX.solr-hosting.info
Nicht in
plugin.tx_solr.solr.host = solrXXXX:PASSWORTsolrXXX.solr-hosting.info
geändert werden oder hat die 5 etwas mit der solr version zu tun?
Was ist mit https?
Welcher Port muss ich dann auswählen, wenn der Solr Server bei euch läuft?
plugin.tx_solr.solr.port = 80
Funktioniert wohl nicht, oder?
Danke für das Feedback!
Grüsse Dan
zu deiner ersten Frage: Da ist uns wohl ein Tippfehler unterlaufen. Vielen Dank für den Hinweis. ;-)
Zu Frage zwei: Der Port für https ist 443.
Hier gibt es übrigens noch einen aktuelleren Beitrag dazu: https://www.mittwald.de/faq/tipps-und-tricks/solr/solr-in-typo3-einrichten
Viele Grüße aus Espelkamp.
Kristina
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
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
"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?
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.
Vielen Dank für deine Rückfrage. :) Da hast du Recht. Du benötigst solrfal und Tika.
Viele Grüße
Kristina
Das Problem mit dem Task „Index Queue Worker“ lag am fehlenden Backend User „_cli_scheduler“. Hier könnte man ggf. noch die Beschreibung erweitern!
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 ;)
um Dateien (PDF, doc/docx, xls/xlsx,..) auf Typo3 zu indexieren reicht dafür Solr oder ist Tika zwingend notwendig?
Viele Grüße