Luke – ein Blick in den Lucene-Index

Wer für seine Anwendung Volltextsuche benötigt, sollte den Einsatz der Java-Bibliothek Apache Lucene oder der darauf basierende Webanwendung Apache Solr ernsthaft in Erwägung ziehen. Egal für welche Technik man sich von beiden entscheidet, letztlich werden die indizierten Daten in einem Lucene-Index abgelegt. Der Lucene-Index kann zwar im Speicher gehalten werden, aber bei großen Datenmengen und für die Fehlersuche sollte man den Index im Dateisystem ablegen.

Mit dem Programm Luke kann sich der Entwickler die abgelegten Daten des Lucene-Index anschauen. Auch wenn das Programm etwas altbacken ausssieht, bietet es wertvolle Hilfe, wenn Dinge mal nicht wie erwünscht funktionieren:

  • Übersicht zu den wichtigsten Begriffen
  • anzeigen von Dokumenten mit den zugehörigen Index-Werten
  • ausführen von Suchen und anzeigen der Suchergebnisse
  • bearbeiten und optimieren des Lucene-Indexes

Luke: Übersicht

Luke: Übersicht

Weiterlesen

Lucene: Volltextsuche leicht gemacht

Wenn man in einem Datenbestand bestimmte Daten sucht, wird man zumeist die Möglichkeiten der jeweils eingesetzten Datenbank nutzen. Sobald man jedoch eine Volltextsuche benötigt, wird es mit einer reinen Datenbanklösung kompliziert. Dann sollte man im Java-Bereich einen Blick auf Apache Lucene und Apache Solr werfen.

Während es sich bei Lucene um eine Java-Bibliothek für Volltextsuche handelt, nutzt die Webanwendung Solr die Funktionen von Lucene und bietet komfortable Anfrage- und Verwaltungsmöglichkeiten über HTTP-Schnittstellen. In diesem Artikel stelle ich ein kleines Projekt mit Lucene vor, allerdings sollte man vor dem Einsatz von Lucene abwägen, ob sich die Anforderungen nicht mit Solr noch einfacher realisieren lassen. Lucene bietet für die Volltextsuche eine Vielzahl von Funktionen an:

  • wie DB-Suche: Felder, boolsche Ausdrücke, Wildcards: title:“rot“ AND desc:“Schuh“
  • Fuzzy Search (Unscharfe Suche): mahlen -> mahlen, malen, Wahlen
  • Stemming von Wörtern (Verwendung des Wortstamms): rote Schuhe -> rot, Schuh
  • Verstärkungsfaktoren (z.B. Produkt): Name*4, Eigenschaften*2, Beschreibung*1
  • Ignorieren von ‚Stopwords‘, z.B: einer, eine, eines, der, die“, das, wie, ohne
  • Unterstützung von vielen Sprachen: Klasse StandardAnalyzer ersetzen durch Klasse GermanAnalyzer für deutsche Sprache
  • vieles mehr

Weiterlesen