Einführung in Apache Lucene/Solr

Lucene und Solr sind hochmoderne Suchtechnologien, die als Open Source von der Apache Software Foundation kostenlos zur Verfügung gestellt werden. Lucene ist die zugrundeliegende Suchbibliothek, und Solr ist eine Plattform, die auf Lucene aufbaut und die Erstellung von Lucene-basierten Anwendungen erleichtert. Beide verfügen über einen großen Funktionsumfang und bieten eine hervorragende Leistung, Relevanzbewertung und Skalierbarkeit. Diese Technologien werden heute von Tausenden von Unternehmen eingesetzt und bilden die Grundlage für umfangreiche Suchanwendungen bei AOL, Comcast Interactive Media, IBM, Netflix, LinkedIn und MySpace.

Von Marc Krellenstein, CTO, Lucid Imagination

Auswahl einer Suchmaschine

In den letzten zehn Jahren war eine einzige Suchmaschinentechnologie manchmal die vorherrschende Wahl für Unternehmen, die eine eigene Suchfunktion für eine Website, ein Produkt oder eine interne oder Extranet-Nutzung entwickeln wollten. Kein einziges Produkt kann alle Anforderungen erfüllen. Aber eine einzige Technologie wurde als Standardwahl anerkannt, und die Benutzer konnten ihre Suche am einfachsten mit der Frage beginnen, ob es Gründe gibt, sie nicht zu verwenden. Heute bin ich der Meinung, dass Apache Lucene und Solr die Standardtechnologie für die Volltextsuche in Unternehmen sind

Was ist Lucene?

Lucene ist eine Java-basierte Suchbibliothek. Sie wurde ursprünglich vor über 10 Jahren von Doug Cutting geschrieben, der zuvor an zwei Suchmaschinen gearbeitet hatte, darunter der einst beliebte Internetdienst Excite. Lucene war eine der ersten Suchfunktionen der 3. Generation. Wie Google und das kürzlich von Microsoft übernommene Fast verfügt Lucene über eine Architektur, die Best-Practice-Relevanz-Ranking und -Abfragen sowie modernste Textkomprimierung und eine partitionierte Indexstrategie einsetzt, um sowohl die Abfrageleistung als auch die Flexibilität der Indizierung zu optimieren.

Im Gegensatz zu diesen anderen Produkten ist Lucene jedoch kostenlos als Open Source unter der liberalen Apache Software Lizenz erhältlich. Diese Lizenz erlaubt es den Nutzern, die Technologie nach eigenem Ermessen zu modifizieren oder einzubetten und das daraus resultierende Produkt zu behalten, zu verkaufen und/oder weiterzuvertreiben. Lucene ist vollständig in Java geschrieben, obwohl es heute auch .NET- und andere Versionen gibt. Der Quellcode ist nicht nur frei verfügbar, sondern auch praktisch und relativ einfach zu verwenden oder zu ändern. Schließlich, und das ist vielleicht das Wichtigste für ein Open-Source-Projekt, hat Lucene den Test der Zeit bestanden. Heute hat Lucene eine große Anzahl aktiver Mitwirkender und Tausende von Installationen, darunter Produktionsanwendungen bei AOL, Apple, CNET, Comcast Interactive Media, IBM, LinkedIn, Monster, MySpace, Netflix, Technorati und Wikipedia. Es gibt zwar noch andere Open-Source-Suchprojekte, aber keines hat mehr als einen Bruchteil der installierten Basis und der Mitwirkenden von Lucene.

Lucene ist voll funktionsfähig und bietet

  1. Geschwindigkeit – Abfrageleistung unter einer Sekunde für die meisten Abfragen
  2. Starkes Out-of-the-Box-Ranking bei der Relevanz – genauso gut oder besser als die besten kommerziellen Wettbewerber
  3. Umfassende Abfragefunktionen: Schlüsselwörter, boolesche und +/- Abfragen, Proximity-Operatoren, Wildcards, feldbasierte Suche, Gewichtung von Begriffen/Feldern/Dokumenten, Ähnlichkeitssuche, Rechtschreibprüfung, mehrsprachige Suche und mehr
  4. Vollständige Ergebnisverarbeitung, einschließlich Sortierung nach Relevanz, Datum oder einem beliebigen Feld, dynamische Zusammenfassungen und Trefferhervorhebung
  5. Portabilität: läuft auf jeder Plattform, die Java unterstützt, und Indizes sind plattformübergreifend portabel – Sie können einen Index unter Linux erstellen und ihn auf einen Microsoft Windows-Rechner kopieren und dort durchsuchen
  6. Skalierbarkeit – es gibt Produktionsanwendungen mit Hunderten von Millionen und Milliarden von Dokumenten/Datensätzen
  7. Indizes mit geringem Overhead und schnelle inkrementelle Indizierung, insbesondere in den Versionen 2.3 und höher

Was ist Solr?

Solr ist eine auf Lucene aufgesetzte Codeschicht, die Lucene in eine Suchplattform für die Entwicklung von Suchanwendungen verwandelt. Solr wurde von Yonik Seeley während seiner Zeit bei CNET entwickelt und von CNET an Apache übergeben. Solr bietet die folgenden Funktionen:

  1. Webdienst: Solr stellt Lucene über HTTP zur Verfügung, so dass Programme, die in einer beliebigen Sprache geschrieben sind, Lucene aufrufen können.
  2. XML-basiertes Schema zur Verwaltung indizierter Felder und ihrer Eigenschaften
  3. Systemverwaltungstools für Konfiguration, Datenladen, Indexreplikation, Statistik, Protokollierung und Cache-Verwaltung
  4. Verteilte Suche in großem Maßstab
  5. Feste/bezahlte Ergebnislistenplatzierung
  6. Facettierung – die dynamische Gruppierung von Artikeln oder Suchergebnissen in Kategorien, die es Nutzern ermöglicht, die Suchergebnisse nach einem beliebigen Wert in einem beliebigen Feld aufzuschlüsseln (oder sogar die Suche ganz zu überspringen), wie auf beliebten E-Commerce-Websites wie Amazon zu sehen ist.

Die meisten Benutzer, die Lucene-basierte Suchanwendungen erstellen, werden feststellen, dass sie dies schneller tun können, wenn sie mit Solr beginnen, da es viele der Funktionen enthält, die benötigt werden, um eine Kernsuchfunktion in eine vollwertige Suchanwendung zu verwandeln. Die meisten der oben erwähnten neueren großen Lucene-basierten Installationen verwenden Solr, darunter AOL, Comcast Interactive Media und Netflix und natürlich CNET. Wie in jeder offenen, mehrschichtigen Umgebung können Benutzer jedoch auch direkt mit der zugrunde liegenden Lucene-Bibliothek arbeiten, um beispielsweise Lucene-Funktionen auf niedrigerer Ebene zu manipulieren oder zu nutzen.

Vor- und Nachteile von Lucene/Solr als Open Source

Die Tatsache, dass Lucene/Solr Apache Open Source Software ist, bietet einige bedeutende Vorteile:

  1. Kostenlos zu verwenden – keinerlei Lizenzgebühren
  2. Vollständiger Quellcode, der Ihnen die Unabhängigkeit und Kontrolle bietet, die Sie normalerweise nur durch das Schreiben Ihrer eigenen Software erhalten. Die Lucene/Solr Apache-Lizenz erlaubt es den Benutzern, abgeleitete oder proprietäre Werke ohne Einschränkungen zu erstellen oder zu verbreiten.
  3. Code, der von Programmierern entwickelt wurde, die selbst Endbenutzer sind und versuchen, dringende Bedürfnisse der Endbenutzer zu lösen
  4. Community – Eine große, aktive und hilfsbereite Gemeinschaft von Entwicklern und Endbenutzern, mit Foren und Mailinglisten für Diskussionen und Problemlösungen sowie unabhängigen Beratern, die speziellere Unterstützung anbieten

Open-Source-Software – ob mit Apache-Lizenz oder nicht – hat im Vergleich zur besten kommerziellen Software ebenfalls einige Einschränkungen:

  1. Keine formellen Unterstützungsverträge
  2. Keine gesicherte Verfügbarkeit von Schulungen oder anderen professionellen Dienstleistungen zur Erfüllung spezifischer Softwareanforderungen oder zur Unterstützung bei der Erstellung einer Anwendung
  3. Kein formalisiertes Programm für Release-Tests, kein Zeitplan für die Veröffentlichung und keine Garantie für die Kompatibilität von Upgrades. Allerdings müssen Lucene/Solr-Beiträge Unit-Tests unterzogen werden, bevor sie in den Code aufgenommen werden, und die Releases erhalten integrierte Tests.

Erstellen Sie Ihre Suchanwendung mit Lucene/Solr

Die Entwicklung einer guten Volltextsuche ist ein anspruchsvolles Unterfangen, und die beste Technologie ist nur ein Teil der Lösung. Suchmaschinen wie Lucene/Solr verfügen über gute Standardeinstellungen und Tools, die dazu beitragen, dass Anwendungen nicht nur funktionieren, sondern auch effektiv sind. Aber die besten Suchanwendungen erfordern ein Verständnis sowohl der Daten als auch der Benutzer. Informationen müssen aus Dateisystemen, Datenbanken oder Websites aggregiert und indiziert und für die Suche normalisiert werden. Ein Satz von Dokumenten kann sich beispielsweise auf einen Dokumentennamen als Titel beziehen, ein anderer auf ihn als Überschrift; eine Suche nach ‚Fuchs‘ sollte wahrscheinlich auch Artikel mit ‚Füchsen‘ darin finden. Der Kenntnisstand der potenziellen Benutzer und ihre Vertrautheit mit den Daten muss bei der Gestaltung ebenfalls berücksichtigt werden, und es kann erforderlich sein, Synonyme zu verwenden (z. B. Herzinfarkt = Myokardinfarkt). Die Relevanzeinstufung muss in der Regel auf der Grundlage der tatsächlichen Aktivitäten der Benutzer angepasst werden, um die Effektivität einer ersten Anwendung zu verbessern. Fortgeschrittenere Funktionen wie ‚automatisches Feedback‘ können nützlich sein (und andererseits können viele oft versuchte Bemühungen zur Verbesserung der Suche zugunsten der aktuellen Best Practices ignoriert werden).

Eine großartige Suchanwendung wie Google ist nur zum Teil ein Erfolg der rohen Technologie. Er spiegelt auch eine fachkundige Einschätzung der Daten und Nutzer dieser speziellen Anwendung wider. Da es mehr als genug gute Antworten für eine Suche im Internet und noch mehr schlechte Antworten gibt, wird ein nach Beliebtheit gewichtetes Ranking die schlechten Daten aussortieren und mehr als genug gute Daten für die typischen Nutzer von Google finden. Aber jede bestimmte Suchanwendung kann sehr unterschiedliche Daten und Nutzer haben. Bei den meisten Suchanwendungen überwiegen die schlechten Daten nicht die guten Daten, und es kann wichtiger sein, die besten Ergebnisse zu finden, als genügend gute Ergebnisse zu finden. Die Sicherheits- und Datenschutzanforderungen einer typischen Anwendung können sich auch stark von denen eines öffentlichen Internetdienstes (oder denen eines Geheimdienstes) unterscheiden. Die Kunst einer guten Suche besteht darin, eine gute generische Technologie in eine gute spezifische Anwendung zu verwandeln.

Die Fähigkeiten für die Erstellung einer großartigen Suchanwendung kommen meist von der Erstellung anderer Anwendungen, aber für die meisten Benutzer ist die Erstellung einer Suchanwendung ein seltenes Ereignis. Aus diesem Grund kann es nützlich sein, fachkundige und erfahrene Ressourcen zu suchen, die bei der Konzeption, der Entwicklung und/oder dem Einsatz von Anwendungen behilflich sind, ebenso wie es wertvoll sein kann, sich fachkundige Supportressourcen für die laufende Wartung zu sichern. Kommerzielle Unternehmen wie Lucid Imagination basieren auf Open Source, können aber auch formellen Support und Unterstützung für Anwender dieser Open Source-Tools anbieten.

Grundlegende Lucene/Solr Ressourcen

You Might Also Like

KI-Agenten dominieren den Einkauf. Ist Ihre Website auf die KI-gestützte Suche vorbereitet?

Generative KI-Agenten wie ChatGPT definieren die Produktsuche neu. Erfahren Sie, wie Sie...

Read More

Vom Suchunternehmen zum praktischen KI-Pionier: Unsere Vision für 2025 und darüber hinaus

CEO Mike Sinoway gibt Einblicke in die Zukunft der KI und stellt...

Read More

Wenn KI schief geht: Fehlschläge in der realen Welt und wie man sie vermeidet

Lassen Sie nicht zu, dass Ihr KI-Chatbot einen 50.000 Dollar teuren Tahoe...

Read More

Quick Links