Zum Inhalt springen

Solr: Leistungsstarke Suche für die Webseite

Mit der Solr Suche finden die Besucher deiner Webseite schnell das passende Ergebnis. Sie liefert schnellere und bessere Ergebnisse als das in TYPO3 integrierte indexed_search.
Die SOLR Suche ist in den meisten unserer Hosting Tarife kostenlos enthalten.

Was ist Apache Solr?

Solr ist ist eine Open-Source Software, die extrem schnelle und hochwertige Suchergebnisse liefert. Selbst bei Millionen von Dokumenten liefert die Suchmaschine Ergebnisse in wenigen Millisekunden. Solr ist ein Projekt der Apache Foundation und basiert auf der Lucene Technologie. Die Solr Software ist in Java geschrieben und läuft außerhalb von TYPO3 auf einem eigenen Server (z.B. Tomcat oder Jetty). Über Erweiterungen kommuniziert TYPO3 mit diesem Suchmaschinen-Server.

Zu den wichtigsten Funktionen zählen

  • Volltextsuche
  • Hervorhebung des Suchbegriffs in den Ergebnissen
  • facettierte Suche (Gruppierung der Treffer nach Kategorien)
  • Vorschläge bereits bei Eingabe des Suchbegriffs (auto-suggest)
  • Vorschläge bei falsch geschriebenen Begriffen (meinten Sie...?)
  • Feintuning der Suchergebnisse (z.B. Boost, Bevorzugung aktueller Inhalte)
  • Synonyme (Suche nach Handy liefert auch Ergebnisse mit Smartphone)
  • Stopwörter (für diese Wörter erscheint kein Ergebnis)
  • Suche im Inhalt von Dateien (über 100 Dateitypen)
  • Aktualisierung in Echtzeit
  • Einfache Anbindung an Datenbankfelder
  • Berücksichtigung von Berechtigungen

Warum ist eine leistungsstarke Suche wichtig für die Webseite?

Oft sind Informationen auf einer Webseite nur über verschachtelte Menüs auffindbar. Gerade auf Mobilgeräten wird oft die Suchfunktion gegenüber der Navigation per Menü bevorzugt. Hierbei ist es wichtig, dass die Suche sehr schnell das passende Ergebnis liefert.

TYPO3 verfügt mit indexed_search bereits eine integrierte Suchfunktion. Diese ist nur einen eingeschränkten Funktionsumfang und die Antwortzeit steigt mit der Zahl der indexierten Dokumente. 

Welche Versionen von Apache Solr stellt jweiland.net bereit?

In unserem Managed Solr Hosting werden aktuell die Solr Versionen 4.1 bis 9.3 unterstützt.

Wie setze ich Solr mit TYPO3 ein?

Für die Nutzung von Solr mit TYPO3 stehen einige Erweiterungen zur Verfügung, z.B.:

  • Die solr Extension bietet die Grundfunktionen
  • solr_fal implementiert den Zugriff auf Dateien
  • Mit der tika Extension können Dateiinhalte indexiert werden
  • Die Extension solrmlt (more like this) ermöglicht die Anzeige verwandter Suchergebnisse
  • Bei Projekten mit vielen Domains in einer Datenbank (Multisite) wird die Indizierung mit der Extension jwtools vereinfacht

Beim Einsatz der Extension muss darauf geachtet werden, dass die Versionen der einzelnen Software-Komponenten zueinander passen. Für TYPO3 Version 12.4 ist ein Server mit Apache Solr 9.3 und die Solr Extension 12.x erforderlich. Klingt verwirrend? Eine Versionsmatrix in der Dokumentation zeigt die Zusammenhänge. 

Einige Hosting-Anbieter haben auch Solr Hosting im Angebot. Bei unseren Hosting Paketen ist Solr ab dem Tarif Premium bereits im Preis enthalten. Alternativ kann ein eigener Solr Server aufgesetzt werden.

Solr Cores buchen

Um die Suche einzusetzen, benötigt man einen Solr Server auf der Basis von Java. Wer selbst einen solchen Server einrichten, betreiben und aktualisieren möchte, findet entsprechende Anleitungen in der Dokumentation zu Solr. Viel einfacher und schneller geht es in unseren Hosting Tarifen, dort ist die Nutzung unserer Solr Server ab dem Tarif Premium bereits inklusive.

Für jede Sprache wird ein eigener Solr-Core benötigt, bei einer zweisprachigen Webseite also 2 Cores. 

Die Suchindizes innerhalb eines Cores sind getrennt je Domain gespeichert, daher kann ein Core für mehrere Domains verwendet werden. 

Ab unserem Hosting Tarif Premium sind zwei Cores bereits im Preis enthalten, weitere Cores (Sprachen) können in 5-er Paketen hinzubestellt werden. Es gibt bei unserem Solr-Hosting keine Limitierung bezüglich Anzahl der indexierten Dokumente, Speicherplatz oder Suchabfragen ("fair use" Prinzip). 

In unseren Cloud-Tarifen erfolgt die Buchung der Solr Cores über die Vertragsverwaltung. In den Classic-Hosting Tarifen erfolgt die Bestellung mit dem folgenden Formular:

 

Bestellformular Solr Cores im Classic Hosting

Kundendaten
Solr-Daten

Entwicklungs-Beteiligung

Die Entwicklung der Solr Extensions erfolgt unter der Federführung von d.k.d. in Frankfurt. Ein Teil der Extensions ist frei im TYPO3 Extension Repository (TER) bzw. auf Github verfügbar. Bei Teilnahme am Partnerprogramm von dkd erhält man Zugriff auf alle Extensions sowie die aktuellen Entwicklungsversionen. 

Eine Matrix vergleicht die Funktionen der verschiedenen Solr Extensions und indexed_search.

Installation, Grundkonfiguration

Für die Grundfunktion der Solr Suche wird nur die Extension solr benötigt, weitere Extensions für Zusatzfunktionen können später noch hinzugefügt werden. Je Webseiten-Sprache, die in TYPO3 konfiguriert ist, wird ein passender Solr Core benötigt. 

Auf der Root-Seite des Projekts muss in den Seiteneigenschaften auf dem Reiter Verhalten die Option "Als Anfang der Webseite benutzen" aktiviert sein.

Die Konfiguration des Solr Servers erfolgt unter Seitenverwaltung->Seiten im Reiter Solr. Nach der Bestellung der Solr Cores mit dem Formular oben erhältst du die Zugangsdaten in der Form Benutzername (meist die Kundennummer), Passwort und Adresse des Solr Servers. Diese werden in der Form Benutzername:Passwort@Server eingegeben. Die Verbindung erfolgt per https:// auf Port 443, das Zielverzeichnis lautet /

TYPO3 Version:12 LTS11 LTS10 LTS9 LTS8 LTS7 LTS

Verbindungsdaten zum Solr Server (TYPO3 bis Version 8)

Nach Bestellung eines Solr Cores für ein Hosting Paket erhält der Kunde von uns die entsprechenden Zugangsdaten. Diese können direkt per Copy/Paste übernommen werden. Hier ein Beispiel:

plugin.tx_solr.solr.host = 123456.solr-01.jweiland.net
plugin.tx_solr.solr.username = 123456
plugin.tx_solr.solr.password = geheim
plugin.tx_solr.solr.port = 443
plugin.tx_solr.solr.path = /solr/core_german/
plugin.tx_solr.solr.scheme = https

Dabei entspricht 123456 der Kundennummer, der Hostname kann ebenfalls variieren. Mit 'scheme' wird festgelegt, dass die Verbindung zwischen TYPO3 und dem Solr Server über eine verschlüsselte Verbindung erfolgt.

Bei mehreren Sprachen wird der zugehörige Solr Core über eine Bedingung konfiguriert:

[globalVar = GP:L = 1]
plugin.tx_solr.solr.path = /solr/core_english/
[GLOBAL]

In der Dokumentation zur Solr Extension sind alle Optionen für die TypoScript Konfiguration beschrieben. 

Nachdem der Konfiguration der Verbindungsdaten wird über das Blitz-Symbol die Verbindung zum Solr-Server aufgebaut. Sollte die Option "Initialize Solr Connections" hier nicht sichtbar sein, muss man sich aus dem Backend aus- und wieder einloggen. Anschließend wird über den Menüpunkt Adminwerkzeuge->Suche geprüft, ob die Verbindung erfolgreich ist:

TYPO3 Version:8 LTS

Statisches TypoScript Template

Die Solr Extension liefert eine Reihe von statischen TypoScript Templates mit. Hier muss im Root Template zumindest das Modul "Search - Base Configuration (solr)" eingebunden werden. 

Solr indexiert standardmäßig Seiten und die regulären Inhaltselemente. Extensions mit eigenen Datensätzen erfordern jeweils eine eigene Konfiguration per TypoScript. Für die Extensions news und tt_news werden entsprechende Beispiele bereits mitgeliefert, diese können auch als Beispiel für weitere Extensions dienen.

Funktionsweise

Die zu indexierenden Elemente (Seiten mit Inhalten und Datensätze von Extensions) werden in die Datenbanktabelle tx_solr_indexqueue_item eingetragen. Die geschieht automatisch beim Anlegen, Einfügen und Ändern von Daten. 

Ein Scheduler Task (Index Queue_Worker) sucht bei jeder Ausführung in dieser Tabelle nach neuen bzw. geänderten Einträgen und veranlasst für diese die Indexierung auf dem Solr Server. Eine Indizierung erfolgt also nur, wenn der Scheduler regelmäßig, z.B. alle 5 Minuten, ausgeführt wird. In diesem Fall wäre neuer oder geänderter Inhalt nach spätestens 5 Minuten über die Suche auffindbar. 

Werden beim Indexieren verlinkte Dateien gefunden, so werden diese (beim Einsatz der Extension solrfal) diese in eine zusätzliche Queue in der Datenbank (tx_solr_indexqueue_file) eingetragen. Die Indizierung erfolgt dann über einen weiteren Scheduler Task (File Index Queue Worker).

Werden Inhalte gelöscht, wird der Löschauftrag unmittelbar an den Solr Server übermittelt, eine Ausführung des Scheduler Tasks ist hierfür nicht erforderlich.

Vorbereitung

Im HTML Template der Webseite müssen <!--TYPO3SEARCH_begin--> und <!--TYPO3SEARCH_end--> Marker vorhanden ein. Damit werden die zu indexierenden Inhaltsbereiche gekennzeichnet. So sollten z.B. Menüs und Listenansichten von Datensätzen nicht in die Suche aufgenommen werden. Statt der Listenansichten verwendet man die Einzelansicht für den Suchindex. 

Für jede Extension (außer news und tt_news) muss per TypoScript eine Konfiguration der index_queue definiert werden. Hier wird definiert, welche Felder mit welchen Eigenschaften in den Suchindex aufgenommen werden sollen.

Generell muss die Suche in TypoScript aktiviert werden:

config.index_enable = 1

Über den Menüpunkt Adminwerkzeuge->Suche wird dann noch die Indexqueue einmalig initialisiert. Danach erfolgt die Indexierung durch die Ausführung des Scheduler-Tasks.

Plugin für Suche einfügen

Jetzt muss noch eine Seite für die Anzeige der Suchergebnisse eingerichtet werden. Auf einer neuen Seite wird dafür das Plugin für die Suche eingebunden. Die Seite selbst sollte für Google auf noindex gestellt werden.

Aktualisiert: 12.03.2024