Anzeige
Anzeige
Software & Entwicklung
Artikel merken

Clever suchen mit TYPO3: Das leistet die SOLR-Extension

In Zeiten des Datenüberflusses ist es für Betreiber von Websites wichtig, ihren Besuchern effektive Such-Werkzeuge an die Hand zu geben. Die Neuauflage der Solr-Integration in TYPO3 legt dafür einen wichtigen Grundstein: Neben schneller und effizienter Suche erlaubt die Erweiterung auch flexible Filter und die direkte Indexierung geänderter Daten.

8 Min. Lesezeit
Anzeige
Anzeige

Bei Solr handelt es sich um einen Enterprise-Search-Server, basierend auf der Lucene Search Engine. Beides sind in Java entwickelte Projekte der Apache Software Foundation und haben ihre Leistungsfähigkeit mit Referenzen wie eBay, iTunes und Twitter schon längst bewiesen [1].

Anzeige
Anzeige

Wie der Name erahnen lässt, liefert „Apache Solr für TYPO3“ [2] eine Integration von Solr als TYPO3-Extension („solr“ im TYPO3 Extension Repository) [3]. Die Entwicklung der Extension begann als Prototyp bei der dkd Internet Service GmbH im Sommer 2008. Im Frühjahr 2009 begann dann die Umsetzung zur ausgewachsenen Extension mit tiefgehender Integration in das Enterprise Content Management System.

Zu den Prinzipien während der Entwicklung gehörte eine saubere Architektur, verständlicher Code sowie das Ziel einer möglichst einfachen und konsistenten Konfiguration. Darüber hinaus sollen die Redakteure so wenig wie möglich mit der Suche in Kontakt kommen oder auf bestimmte neue Arbeitsweisen achten müssen. Designer müssen sich in der Gestaltung des Interfaces frei entfalten können, ohne durch technologische Gegebenheiten beschränkt zu werden. Zu guter Letzt soll dem Besucher einer Website eine mit modernen Funktionen ausgestatte On-Site-Suche geboten werden, wie er sie etwa von Google kennt.

Anzeige
Anzeige

Neuheiten in Version 2.0

Zu den offensichtlichsten Neuerungen gehört der Installer, der nunmehr die komplette Installation eines Solr-Servers übernimmt. Damit ist es auch ohne jegliche Java-Kenntnisse möglich, einen Solr-Server zu installieren. In der eingesetzten Solr-Version 3.5 hat Apache insbesondere die RAM-Nutzung, Geschwindigkeit und die Query-Syntax verbessert. Außerdem hielten neue Funktionen Einzug in das System, etwa ein neuer Query-Handler, der sowohl Teilwort- und Phrasensuchen als auch boolsche Operatoren ermöglicht.

Anzeige
Anzeige

Während der Installation wird nun standardmäßig eine Multi-Core-Umgebung konfiguriert. Dies erleichtert die Handhabung von mehrsprachigen Webseiten, weil für jede Sprache ein eigener Core mit entsprechenden Algorithmen zur Sprachanalyse verwendet wird. Insgesamt unterstützt Solr nun 36 Sprachen.

Auf TYPO3-Seite unterstützen neue Prüfmethoden und Meldungen im Reports-Modul bei der Fehlersuche. Außerdem wurden die Konfigurationsoptionen der Extension an vielen Stellen vereinheitlicht und logischer gruppiert, um schnell erste Erfolge zu erzielen.

Anzeige
Anzeige

Setzte die letzte öffentliche Version im TYPO3 Extension Repository noch auf die bekannte Frontend-Indexierung, tritt nun die Index-Queue mitsamt Record Monitor und Garbage Collection an deren Stelle.

Dank flexibel einsetzbarer Filter wirkt die bislang eher statische Suche sehr modern und dynamisch.

Über ein neues Modul im TYPO3-Backend können einfache Administrationsaufgaben am Solr-Index ausgeführt werden. Andere Module geben einen Einblick darüber, welche Daten im Index vorhanden sind. An vielen Stellen, an denen man zuvor händisch Daten angeben musste, können diese nun über einfache Menüs ausgewählt werden. Sollten doch einmal Probleme auftreten, helfen erweiterte Logmeldungen, diese zu beheben.

Mit nur einem Befehl richtet ein Installer einen kompletten Solr-Server ein.

Suchwörter werden nicht nur auf der Ergebnisseite hervorgehoben, sondern auch auf der eigentlichen Zielseite. Ergebnisse können in Gruppen, etwa nach Typ, ausgegeben werden und können über weitere Facetten vom Besucher gefiltert werden. Auch die Indexierung von Mount Pages und Dateianhängen in Datensätzen wie tt_news unterstützt die Extension nun.

Anzeige
Anzeige

All diese Neuerungen brachten diverse Schnitte in der Entwicklung mit sich, die sich auf bestehende Installationen auswirken können. Wer also ein Update plant, sollte vorab einen Blick ins ChangeLog werfen. Als Grundlage wird nun die Long-Term-Support-Version TYPO3 4.5 vorausgesetzt.

Index-Queue: Indexierung 2.0

In Solr 2.0 wurde die bekannte Frontend-Indexierung abgeschafft und komplett durch die Index-Queue ersetzt. Denn die Indexierung der Inhalte über das Frontend hat viele Nachteile. So landen geänderte Inhalte erst im Index, wenn ein Besucher die geänderte Seite aufruft und diese damit neu indexiert. So kann es mitunter, je nach Besucherzahl einer Seite, dauern, bis diese eine geänderte Seite aufgerufen und damit indexiert wird. Bis dahin taucht sie in der Suche nicht auf.

Alternativ ruft der Redakteur die Seite selbst auf oder ein umständlich zu konfigurierender Crawler durchwühlt regelmäßig die Seite. Das größte Manko des Crawlers ist jedoch, dass er nicht weiß, welche Inhalte sich geändert haben oder ob sich überhaupt Inhalte geändert haben. Deswegen muss der Crawler immer die gesamte Seite ablaufen, was ressourcen- und zeitintensiv ist.

Anzeige
Anzeige

Probleme, mit denen die Index-Queue nicht zu kämpfen hat. Bei der Initialisierung indexiert die Queue einmal alle Inhalte. Ein Scheduler-Task arbeitet diese Liste dann Stück für Stück ab. Dabei ist es egal, ob es sich bei einem Eintrag in der Index-Queue um eine Seite, eine Datei, eine News, ein Produkt oder andere Datensätze aus eigenen Extensions handelt.

Arbeitet ein Redakteur nun an Inhalten, werden diese Änderungen vom Record Monitor erkannt und in der Index-Queue zur erneuten Indexierung markiert. So müssen nur die tatsächlich geänderten Inhalte neu indexiert werden und die Änderung wird umgehend von der Suche berücksichtigt. Werden Inhalte durch einen Redakteur gelöscht, versteckt oder durch Änderung der Zugriffsrechte für den Besucher unzugänglich, entfernt das System die entsprechenden Einträge sofort aus dem Index.

Ergebnistypen

Während Indexed Search und andere Such-Extensions nur Seiten kennen, auch wenn auf einer Seite eigentlich ein Produkt dargestellt wird, kann Solr über die Index-Queue auch eine News von einem Produkt oder von einer Seite unterscheiden. Das Ergebnis ist eine differenzierte Darstellung der Suchergebnisse.

Anzeige
Anzeige

Weil Eigenschaften strukturiert erfasst und im Index abgelegt werden können, können diese bei der Ausgabe der Ergebnisse als Filter eingesetzt werden. Filter können entweder vordefiniert oder über Facetten vom Besucher gesteuert werden, um schnell und einfach an die gesuchten Information zu kommen.

Die eigentliche Indexierung via Index-Queue erkennt und indexiert automatisch auch die Übersetzungen bei Seiten. Gleiches gilt für eventuell vorhandene Zugriffsbeschränkungen, sowohl auf Seiten- als auch auf Inhaltselement-Ebene. Diese werden erkannt und als separate Dokumente mit entsprechenden Zugriffsbeschränkungen im Index abgelegt. Sucht ein angemeldeter Besucher im Index, erhält er nur Ergebnisse, für die er entsprechende Rechte besitzt. Die Berücksichtigung von Zugriffsrechten ist insbesondere in Intra- und Extranet-Umgebungen wichtig.

Die Indexierung von Datensätzen, etwa von News oder Produkten, lässt sich über ein einfaches Mapping von Datenbank- zu Indexfeldern steuern. Dabei unterstützen Helfer-Objekte die Index-Queue, indem sie Rich-Text-Editor-Felder aufbereiten, Relationen auflösen und kommaseparierte Listen splitten. Auch hier werden Übersetzungen und Zugriffsrechte automatisch erkannt.

Anzeige
Anzeige

Für nicht abgedeckte Spezialfälle stehen überdies Interfaces zur Verfügung, die die Implementierung eigener Indexer erlauben. Damit ist die Index-Queue nicht nur schneller und präziser, sondern auch flexibler und entsprechend effizienter als ihr Vorgänger.

Alles grün im Statusreport. Eventuelle Probleme werden hier ebenfalls angezeigt.

Solr für TYPO3 selbst einsetzen

Wer heute Solr mit seiner TYPO3-Installation einsetzen möchte, ist gezwungen, seinen Server entsprechend zu erweitern. Doch während dies bei Version 1 noch manuell erfolgen musste, bringt die Solr-Extension nun ein Shell-Skript mit, das die Installation durchführt. Der Installer lädt Tomcat, Solr und auf TYPO3 angepasste Konfigurationsdateien, am Ende wird Solr gestartet und ist bereit zum Einsatz.

Kunden eines Hosting-Anbieters ohne Root-Rechte sind auf den Provider angewiesen. Doch die bekannten TYPO3-Hoster haben bereits entsprechende Produkte im Angebot.

Anzeige
Anzeige

Installation

Nach erfolgreicher Installation im Extension Manager benötigt TYPO3 die Standard-TypoScript-Konfiguration als statisches Template. Um die Änderungen sowie die konfigurierten Solr-Verbindungen zu erkennen, ist ein Leeren des Konfigurations-Caches im Anschluss nötig.

Die Standard-Konfiguration erwartet den Solr-Server unter http://localhost:8080/solr/; an diese Stelle installiert auch das Shell-Skript den Solr-Server. Anpassungen der Einstellungen sind via TypoScript über „plugin.tx_solr.solr“ möglich.

Indexierung

Die Konfiguration der Index-Queue erfolgt über TypoScript in „plugin.tx_solr.index.queue“. Für die Indexierung von Seiten ist hier nichts zu tun, weil durch die Standard-Konfiguration schon alle notwendigen Einstellungen vorbereitet sind. Zusätzlich enthält die Extension eine Beispiel-Konfiguration für tt_news. An dieser kann man sich orientieren, wenn es etwa darum geht, Daten aus eigenen Extensions zu indexieren. Die News-Indexierung ist standardmäßig deaktiviert, was „plugin.tx_solr.index.queue.tt_news = 1“ ändert.

Als nächstes muss die Index-Queue initialisiert werden. Dies geschieht über das Suche-Modul in den Admin-Werkzeugen und mit dem Button „Initialize Index Queue“. Damit werden alle Seiten und News in der Index-Queue erfasst. Nun fehlt noch ein „Index Queue Worker“-Task im Scheduler, für den sich sowohl die Intervalle als auch die Zahl der Einträge je Seite definieren lassen.

Die Abarbeitung der Index-Queue steuert ein Scheduler Task.

Der Task muss nun ausgeführt werden, bis die Seite zu 100 Prozent indexiert ist. Die Inhalte wären jetzt aber noch nicht auffindbar, denn Solr benutzt einen Zwischenspeicher, in dem neue Dokumente zunächst abgelegt werden, um nicht bei jedem neuen Dokument den Index neu zu schreiben. Die mit der Extension mitgelieferte Solr-Konfiguration sorgt aber dafür, dass spätestens nach einer Stunde oder nach 100 Dokumenten diese automatisch in den Index aufgenommen werden. Manuell lässt sich das Schreiben auch über den Button „Commit Pending Documents“ starten.

Suche

Um den Besuchern die Möglichkeit zu geben, die Suche auch zu nutzen, kommt das Such-Plugin zum Einsatz; die Standard-Einstellungen sind fürs Erste ausreichend. Damit ist die Suche einsatzbereit und läuft fortan dank Record Monitor, Index-Queue und Garbage Collection quasi im Autopiloten-Modus. Genauere Erläuterungen zu Installation und Konfiguration finden sich sowohl im TYPO3 Forge Wiki [6] als auch über die Mailingliste [7]. Zum Solr-Server findet sich darüber hinaus auch Literatur zu Installation und Konfiguration [8].

Suchergebnisse einschränken

Neben der Suche eignet sich Solr aber noch für mehr. Denn dank einer flexiblen Template-Engine ist es möglich, schnell neue Darstellungen von Datensätzen umzusetzen, um die Suchergebnisse direkt zu filtern. Dabei wird die Darstellung der Ergebnislisten durch die Solr-Extension selbst übernommen und die Extension, die die Daten liefert, muss sich nur noch um die oft viel einfachere Einzelansicht kümmern. Dabei muss die Listenansicht nicht zwangsweise eine tatsächliche Liste sein, auch Thumbnail-Raster oder ganze Shop- und Katalogsysteme sind möglich.

Die tatsächliche Funktionsweise dieser Filter-Mechanismen erklären sich idealerweise an einem Beispiel. Dieses ist in Form einer kleinen Extension (Solr Boutique, „solr_boutique“) mitsamt Dokumentation im TYPO3 Extension Repository verfügbar.

Das Beispiel zeigt, dass Solr für mehr als nur die Suche taugt.

Weitere Roadmap

Nachdem nun etwa ein Jahr seit dem letzten Release vergangen ist, legt Version 2.0 einen neuen Grundstein, auf den fortan in kürzeren Abständen aufgebaut werden soll. Neben dem Ausbau des Backend-Moduls stehen vor allen Dingen eine Geo-Suche und die Unterstützung der Workspaces auf dem Programm.

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
4 Kommentare
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

alem_r

Danke für den coolen Beitrag. Noch ne technische Frage:

Wenn man mehrere Typo3 Installationen auf dem Server hat kann man dies auch für mehrere Installationen nutzen?

Installiert sich der Solr-Server für jede Installation einzeln oder gibt es dann einen Solr-Server als Dienst welcher dann verschiedene „Mandate“ pflegt?

Ist das überhaupt zu empfehlen oder lieber pro Installation wo SOLR nötig ist lieber eigene Umgebung?

Antworten
olivier

Der Apache Solr Server kann mehrere Index-Kerne bereitstellen. Je nach Strategie können dann verschiedene TYPO3 Installationen einen eigenen Index-Kern nutzen oder sich einen Kern teilen. Die einzelnen Index-Dokumente werden durch die Site-ID eindeutig identifiziert.

BTW: Bald started unser SaaS für Apache-Solr: http://www.hosted-solr.com/

Antworten
Mirko Kaufmann

Hallo zusammen,

das Release der 2.0 Version ist ja schon ein paar Tage her, aber ich möchte die Index-Queue nicht mehr missen. Die generelle Queue-Konfiguration via TypoScript und seit Neuestem auch die Priorisierung von verschiedenen Index-Typen ermöglicht einen schnellen Aufbau des Suchindexes für umfassende Websites. Spezielle Projekt-Anforderungen lassen sich ebenfalls schnell durch einen eigenen Indexer abdecken.

Vielleicht hilft mein Artikel noch jemanden bei der Installation:

http://www.internetagentur-kaufmann.de/blog/artikel/typo3-solr-suche-die-10-haeufigsten-konfigurationfehler/

Solr in TYPO3 macht einfach Spaß – Schnell. Schneller. Solr.

Beste Grüße

Mirko

Antworten
Jpsy

Toller Beitrag. Vielen Dank!

Antworten

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