Suchen

Definition Was ist Apache Lucene?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Bei Apache Lucene handelt es sich um ein Projekt der Apache Software Foundation, das eine frei verfügbare Programmbibliothek für die Volltextsuche bereitstellt. Apache Lucene arbeitet bei der Suche mit Indizes und kommt beispielsweise bei Wikipedia oder Twitter zum Einsatz.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

Apache Lucene ist eine frei verfügbare Programmbibliothek, mit der sich Information auf Basis der Volltextsuche auffinden lassen. Das Projekt ist bei der Apache Software Foundation angesiedelt. Mithilfe von Lucene lassen sich beliebige Dokumente mit Textinhalten indizieren und anschließend durchsuchen. Weltweit kommt die Programmbibliothek in vielen Umgebungen zum Einsatz. Unter anderem verwenden Wikipedia und Twitter Lucene für die Bereitstellung von Suchfunktionen auf ihren Plattformen.

Zu den Vorzügen von Apache Lucene zählen Leistungsfähigkeit, Skalierbarkeit und Anpassbarkeit an verschiedene Umgebungen. Die Suche findet bei Apache Lucene unter Verwendung eines zuvor erstellten Index statt. Es handelt sich dabei um eine Liste von Begriffen mit den jeweiligen Verweisen auf die Dokumente, in denen sie vorkommen.

Die Geschichte von Apache Lucene

Ursprünglich wurde Lucene von Doug Cutting Ende der 1990er-Jahre programmiert. Der Name Lucene leitet sich vom zweiten Vornamen der Ehefrau von Doug Cutting ab. Die erste Version war als Download auf der Website von SourceForge verfügbar. Im Jahr 2005 wurde Lucene ein Top-Level-Projekt der Apache Software Foundation. Ursprünglich beinhaltete Lucene einige Sub-Projekte wie Lucene.NET, Mahout, Tika und Nutch, die heute eigene Top-Level-Projekte sind. 2010 wurde der Apache Solr Such-Server als Sub-Projekt in Lucene integriert.

Die wichtigsten Funktionen von Apache Lucene

Die Lucene-Programmbibliothek mit ihren Unterprojekten bietet einen riesigen Funktionsumfang für die Volltextsuche. Sie stellt leistungsfähige, effiziente, schnell und exakt arbeitende Suchalgorithmen zur Verfügung. Für jedes Dokument, das die Suchanfrage erfüllt, berechnet Lucene einen Score und liefert Ergebnisse sortiert nach Relevanz. Bei der Suche unterstützt Lucene verschiedenste Anfragearten wie die Wildcard-Suche, die Phrasen-Suche, die Fuzzy-Suche und viele weitere. Den Anwendern ist es möglich, die Suchergebnisse mit Filtern und Sortierungen weiter einzugrenzen. Auch die Indizierung der Dokumente wird von Lucene geleistet. Suchen und Indizieren können parallel stattfinden.

Der Index als zentrale Informationsstelle für die Suche

Die zentrale Rolle beim Suchen mit Lucene nimmt der Index ein. Lucene erlaubt es, beliebige Daten und Dokumente zu indizieren, aus denen sich Textinformationen extrahieren lassen. Zu diesen Daten oder Dokumenten zählen beispielsweise Textverarbeitungsdokumente, Dokumente einer Tabellenkalkulationssoftware, HTML-Dokumente, PDF-Dateien und viele weitere mehr.

Im ersten Schritt erfolgt die Indizierung der Daten. Ziel hierbei ist es, Informationen für eine schnelle Suche im Textformat bereitzustellen. Es kommen Parser oder Daten-Konverter zum Einsatz. Der Index von Lucene ist mit einem Buch-Index vergleichbar, der zu wichtigen Begriffen und Themen die betreffenden Seitenzahlen des Buches liefert. Der Index von Lucene kann als Sammlung von Dateien auf einem Datenspeicher oder im Arbeitsspeicher vorliegen. Nachdem die vorhandenen Dokumente indiziert sind, kann die Suche mit Lucene erfolgen. Sämtliche Suchanfragen richten sich dabei immer an den Index und nicht an die Ursprungsdokumente. Das Volumen des Index ist wesentlich kleiner als das der Ursprungsdokumente.

Grundidee hinter dem Index ist, dass nicht die Gesamtheit an Texten langwierig durchsucht werden muss, sondern die Suche in einer Liste der suchbaren Begriffe (Index) stattfindet. Ein Treffer im Index liefert die Position des Suchbegriffs im verknüpften Dokument. Nachdem die passenden Dokumente zu einer Suchanfrage im Index gefunden sind, erfolgt eine Sortierung der Ergebnisse nach Relevanz. Hierfür kann Lucene verschiedene Rankingalgorithmen verwenden. Ein einfacher Algorithmus sortiert die gefundenen Dokumente beispielsweise nach der Häufigkeit des Vorkommens eines Suchbegriffs.

Wichtige Bestandteile des Lucene-Projekts

Das Apache-Lucene-Projekt besteht aus verschiedenen Bestandteilen. Eine zentrale Komponente ist der Lucene Core. Er ist für die Indizierung, die Suche und das Hervorheben von Suchtreffern zuständig. Es handelt sich beim Lucene Core um eine Programmbibliothek, die in der Programmiersprache Java geschrieben ist. Mit Lucene.Net steht eine Anpassung von Lucene an die .NET-Plattform und Übersetzung in die Programmiersprache C# zur Verfügung. Mit Lucy sind Sprachanbindungen dynamischer Programmiersprachen wie Perl möglich. PyLucene stellt eine Python-Portierung des Lucene Cores dar. Bei Solr handelt es sich um ein Servlet von Lucene. Solr steht als Abkürzung für Search on Lucene and Resin und bietet APIs für XML, HTTP, JSON, Python und Ruby on Rails. Die Kommunikation von Solr erfolgt mit HTTP POST und HTTP GET.

(ID:45123640)

Über den Autor