Vorheriger Artikel Nächster Artikel

Clever suchen mit TYPO3: Das leistet die SOLR-Extension

Aus dem
t3n Magazin Nr. 27

03/2012 - 05/2012

Clever suchen mit TYPO3: Das leistet die SOLR-Extension
Search button on the keyboard. Toned Image.

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 legt dafür einen wichtigen Grundstein: Neben schneller und effizienter Suche erlaubt die Erweiterung auch flexible Filter und die direkte Indexierung geänderter Daten.

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].

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.

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.

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.

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.

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.

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.

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.

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.

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.

Abonniere jetzt t3n-News über WhatsApp und bleib mobil auf dem Laufenden!
t3n-News via WhatsApp!
Vorheriger Artikel Zurück zur Startseite Nächster Artikel
4 Antworten
  1. von alem_r am 16.10.2012 (08:55 Uhr)

    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 Teilen
  2. von olivier am 16.10.2012 (10:22 Uhr)

    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 Teilen
  3. von mirkokaufmann am 17.10.2012 (22:15 Uhr)

    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 Teilen
  4. von Jpsy am 18.10.2012 (12:06 Uhr)

    Toller Beitrag. Vielen Dank!

    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 LTS: Das kann die neue Version des Enterprise-CMS
TYPO3 CMS 7 LTS: Das kann die neue Version des Enterprise-CMS

Heute ist nach einigen Sprint-Releases mit Version 7.6 endlich die neue Long-Term-Support-Version von TYPO3 CMS veröffentlicht worden. Was der neue Release an Neuerungen mitbringt, zeigen wir euch … » weiterlesen

Das sind die Gewinner der TYPO3-Awards: Die besten Websites der vergangenen zwei Jahre im Überblick
Das sind die Gewinner der TYPO3-Awards: Die besten Websites der vergangenen zwei Jahre im Überblick

Am gestrigen Abend wurden die TYPO3-Awards in Amsterdam verliehen. Wir zeigen euch die Gewinner, von deren Websites ihr euch bestimmt noch Inspiration holen könnt. » weiterlesen

TYPO3 CMS 7.5: Das ist neu
TYPO3 CMS 7.5: Das ist neu

Heute wurde mit TYPO3 CMS 7.5 der letzte Sprint-Release vor dem Long-Term-Support-Release (LTS) veröffentlicht. Die neue Version bringt unter anderem Unterstützung für die einfache Einbindung von … » weiterlesen

Alle Hefte Jetzt abonnieren – für nur 35 €

Kennst Du schon unser t3n Magazin?