Zum Potenzial der Suchtechniken Lucene und Solr

Für die Apache-Suchtechniken Lucene und Solr bietet Lucid Imaginagion Dienstleistungen an. Auch stellt die Firma Entwickler ab. heise Developer im Gespräch mit Marc Krellenstein, dem Technikchef und Gründer des Unternehmens.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 7 Min.
Von
  • Bernd Fondermann
Inhaltsverzeichnis

Marc Krellenstein, Mitgründer und Technikchef von Lucid Imaginations

(Bild: Lucid Imaginations)

Die US-amerikanische Firma Lucid Imagination kennt sicherlich nicht jeder. Vertrauter dürften da schon die Apache-Suchtechniken Lucene und Solr sein, für die das Unternehmen Dienstleistungen anbietet und Entwickler abstellt. Für heise Developer sprach der Lucene-Experte Bernd Fondermann mit dem Technikchef von Lucid Imagination, Marc Krellenstein.

Auf die Einstiegsfrage, wann Google von seiner eigenen streng gehüteten Technik auf die Open-Source Variante Apache Lucene umsteigt, weiß Marc Krellenstein, mit über 20 Jahren Erfahrung fast ein Veteran in Sachen Freitextsuche, keine Antwort. "Eigentlich hat Lucene alles, was Google benötigt. Im Vergleich zu rein kommerziellen Angeboten ist es von den Funktionen her mindestens genauso gut oder besser – und es ist Open Source. Sicherlich hat die Konkurrenz mehr Entwicklungsressourcen und kann deswegen ebenfalls mit einer Fülle von Funktionen auftrumpfen."

Krellensteins Firma Lucid Imaginations bietet kommerzielle Dienstleistungen rund um die beiden verschwisterten Apache-Projekte Solr und Lucene an. Lucene ist eine Java-Bibliothek zum Indizieren und Durchsuchen von Volltext. Sie bietet eine Java-API, um Volltext zu analysieren und in einer eigenen optimierten Datenstruktur, einem sogenannten "Inverted Index", persistent abzulegen und schnell zu durchsuchen.

Solr beschreibt Krellenstein als "Lucene über HTTP", also als Plattform, die – basierend auf Lucene – Eigenschaften wie Caching, ein Index-Schema sowie Replikation hinzufügt und innerhalb eines Webservers bereitstellt. Sie ergänze die Infrastruktur, die man für Lucene in aller Regel früher oder später benötige. Als eine zentrale zusätzliche Solr-Funktion sieht Krellenstein das Faceting. Es biete dem Suchenden eine Auswahl von Kategorien für das Eingrenzen der Freitextsuche. Ist der unspezifische Suchbegriff etwa "Restaurant", wären Facetten zur sinnvollen weiteren Eingrenzung typischerweise die Geographie (Städte, Stadtteile) oder Preiskategorien.

"Nach unserer Erfahrung greifen die meisten Anwender heute zuerst nach Solr. Andere, die früher mit Lucene gestartet sind, wünschen sich, es hätte Solr damals schon gegeben. Es gibt aber auch Gründe, die nur für einen Einsatz von Lucene sprechen: Wenn man eine Suche in ein bestehendes Produkt einbetten will oder aus anderen Gründen keinen Server haben möchte. Zudem kann Lucene in einem Mobiltelefon laufen."

Auf die Frage, ob die Nutzung von Lucene das Schreiben eines Java-Programms voraussetze, entgegnet der Lucene-Spezialist: "Lucenes Flaggschiff-Implementierung ist zwar in Java, aber es gibt Portierungen nach C++, Python, Perl und in einige andere Sprachen, die in der Regel alle der Java-Ausgabe ein bisschen hinterherhinken. MySpace und die Entwickler-Community StackOverflow benutzen zum Beispiel Lucene.Net, das auf dem .NET-Framework läuft. Dieser spezielle Port wird manuell direkt aus dem Java-Code übersetzt." Lucene.Net ist zuletzt aus dem Hauptprojekt in den Apache Incubator gewandert, um beim Namen Lucene.Net bleiben und das Projekt unter Apache weiterleben lassen zu können. Dort hofft man auf neue Entwickler, die die .NET-Portierung begleiten.

In den letzten zwei Jahren hat sich rund um Solr und Lucene viel getan. "Das Indizieren, also das Überführen von Text in die interne Datenstruktur, wurde um den Faktor 10 beschleunigt, das ist wirklich nicht übertrieben", versichert Krellenstein. "Auch auf der Abfrageseite hat sich etwas getan, aber das hat seine Gründe eher darin, dass die Java-Laufzeitumgebung effektiver geworden ist. Nach unseren Benchmarks ist Lucene schneller als Wettbewerber wie Microsofts FAST, was den Durchsatz und die durchschnittliche Suchanfrage angeht. Lucene unterstützt mittlerweile das Near-Realtime Indexing, bei dem neue Daten unmittelbar nach dem Hinzufügen durchsuchbar sind, also sich ein Neuladen des Index vermeiden lässt. Twitter nimmt 8000 neue Tweets pro Sekunde in seinen Lucene-Index auf und macht sie nahezu in Echtzeit durchsuchbar."

Eine nennenswerte Solr-Neuerung sei Solr Cloud, womit sich eine Suche verteilt über mehrere Server ausführen lasse, wovon große Installationen profitieren würden. Es befindet sich noch in Entwicklung und hat noch keinen Einzug in ein offizielles Release gefunden. Reines Clustering von Solr-Instanzen gibt es schon länger.

In den APIs von Solr und Lucene hat es Bewegung gegeben. "In beiden Umgebungen wurde einiges refaktoriert, vor allem im Bereich Textanalyse." An dieser entscheidenden Stelle des Indizierungsprozesses wird ein Text in seine Bestandteile, die sogenannten Terme, zerlegt, und es wird entschieden, welche Terme in den Index einfließen und wie sie das Suchergebnis beeinflussen.

Außerdem wurden die bisher getrennten Entwicklergemeinschaften von Solr und Lucene im letzten Jahr vereinigt. Früher gab es zwischen beiden Gruppen Konflikte darüber, wie und wo Funktionen implementiert werden sollten. Jetzt sind alle zur Zusammenarbeit gezwungen, da es keine getrennten Releases von Lucene und Solr mehr gibt. "Das kostet viel Zeit und Anstrengung, aber es funktioniert", so Krellenstein.