© Enkel/Shutterstock.com
Apache Solr und Elasticsearch

Enterprise-Suche mit Apache Lucene


Im ersten Artikel dieses Schwerpunkts haben wir uns mit Apache Lucene beschäftigt, der Bibliothek hinter den beiden bekannten Enterprise-Suchservern Apache Solr und Elasticsearch. Nun wollen wir das dort Gelernte in die Praxis umsetzen und uns anschauen, was hinter den beiden Produkten steckt.

Als Doug Cutting im Jahr 1999 Lucene zum ersten Mal veröffentlichte, war noch nicht abzusehen, dass daraus einmal ein wichtiger Baustein für die Volltextsuche werden würde – auch und gerade im Unternehmensumfeld. Wie auch für den Autor dieses Artikels war das einer der ersten Gehversuche mit der neuen Programmiersprache Java. Schon damals hat sich gezeigt, dass Java – trotz vieler Unkenrufe wie: „Das ist ja interpretiert, das kann doch nie schnell werden!“ – für die Entwicklung einer Volltextsuchmaschine eine gute Idee war; denn mit den später zur JVM hinzugekommenen JIT- und Hotspot-Compilern wurde das Ganze richtig schnell. Heutzutage ist Apache Lucene sogar deutlich schneller als die zwischenzeitlich auch in der Programmiersprache C/C++ implementierten Lucene-Abkömmlinge. Der Grund dafür liegt in der dynamischen Kompilierung und ständigen Optimierung des Java Bytecodes für die Host-CPU. Was Dougs Suchmaschine damals auch einmalig machte, war die Möglichkeit, dass Dokumente gelöscht und upgedatet werden konnten (was faktisch löschen und neu indexieren ist). Wie schon im vorherigen Artikel über Apache Lucene erläutert wurde, ermöglicht Lucene die Indexierung von Dokumenten mit einer Anzahl von Feldern (ähnlich JSON-Dokumenten oder einfach Key-Value Pairs) und ermöglicht eine feldbasierte Abfrage, zu Beginn allerdings nur auf dem Term Dictionary und den Posting Lists basierend. Die inkrementellen Updates von Dokumenten wurden durch eine damals neue Technik mit Indexsegmenten ermöglicht: Ein Lucene-Index besteht von sich aus aus mehreren kleineren Teilindexen, die im Lauf der Zeit zusammengefasst und neu geschrieben (gemergt) werden.

Überblick und Geschichte

2004 stieß dann Yonik Seeley auf der Suche nach einer firmeninternen (Web-)Suche auf Apache Lucene. Damals war REST noch neu und alle Leute begannen, mit Application-Servern wie Tomcat zu arbeiten und Servlets in Webapplikationen zu implementieren. Zu dieser Zeit wurden gewöhnlich APIs gebastelt, die sehr an die damaligen CGI-Skripte erinnerten: Alle Parameter wurden hinter das Fragezeichen in den URL eingefügt; so etwas wie REST basierend auf Dokumenten gab es noch nicht. Yonik implementierte für seinen Arbeitg...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang