Migrieren Sie von Lucene zu Solr?
Gast-Blogbeitrag
Viele Lucene-Implementierungen verschiedener Jahrgänge stammen aus einer Zeit, in der Solr noch nicht über die Kernfunktionen verfügte, die nur durch den Aufbau aller von den Lucene-Suchbibliotheken benötigten Dienste von Grund auf verfügbar waren. Erfreulicherweise bietet Solr heute eine sehr vollständige (mit einigen kleinen, aber sinnvollen Ausnahmen) Implementierung der Lucene-Funktionen.
Ist ein Wechsel von Lucene zu Solr für Sie sinnvoll? Hier finden Sie einige Überlegungen zu den Vorteilen eines solchen Wechsels.
- Standards standardmäßig verwenden
Als Serveranwendung, die in Jetty, Tomcat oder einem anderen Servlet-Container läuft, lässt sich Solr leicht installieren und in bestehende Produktionsumgebungen integrieren und ausführen. Die RESTful-APIs von Solr und seine XML-gesteuerte Implementierung vereinfachen die Konfiguration, den Betrieb und die Entwicklung von Suchanwendungen. Mit einer breiten Palette von Client-Bibliotheken, von Standard-SolrJ für Java über JSON, Python und viele andere, ist die Basis der für die Suchanwendung erforderlichen Programmierkenntnisse viel schmaler. - Macht Lucene Best-Practices einsatzbereit
Von der Zwischenspeicherung von Filtern, Abfragen oder Dokumenten über die Rechtschreibprüfung bis hin zur Erwärmung von Suchvorgängen im Hintergrund bietet Solr eine enorme Anzahl von Suchfunktionen, für die sonst viel Lucene-Erfahrung und Fachwissen erforderlich wäre. Mit Solr profitieren Sie sofort von diesen Low-Level-Entwicklungen und vereinfachen die Erstellung und Entwicklung Ihrer Suchumgebung. - Die zugrundeliegenden Dienste sind bereits integriert
Als Serveranwendung, die in Jetty oder Tomcat läuft, lässt sich Solr einfach installieren und ausführen, und die zugrundeliegenden Dienste werden im Rahmen des Servers angesprochen. Dateioperationen, Speicherverwaltung, E/A-Konfiguration und viele weitere Plattformfunktionen, die Sie selbst schreiben müssten, um eine Lucene-Anwendung zu erstellen und bereitzustellen, sind bereits integriert, was die Erstellung und Verwaltung Ihrer Suchumgebung vereinfacht. - Serviceorientierte Suche
Die RESTful APIs von Solr und seine XML-gesteuerte Implementierung vereinfachen die Konfiguration, den Betrieb und die Entwicklung von Suchanwendungen. Mit einer Vielzahl von Client-Bibliotheken, von Standard-SolrJ für Java über JSON, Python und viele andere, ist die Basis der für die Suchanwendung erforderlichen Programmierkenntnisse viel schmaler. - Wiederverwendung einiger Ihrer Lucene-Bibliotheken und -Indizes
Da Lucene den Kern von Solr bildet, kann Ihre Lucene-Implementierung viele der gleichen Bibliotheken wiederverwenden. Fügen Sie einfach Details für Ihre Handler oder Analysatoren in die config.xml von Solr ein und beginnen Sie mit dem Testen. Wahrscheinlich werden Sie feststellen, dass Sie einen Großteil Ihres Codes unverändert von Lucene übernehmen oder sogar Ihre bestehenden Indizes direkt mit Solr verwenden können. - Geringere Wartungs- und Revisionskosten
Viele der Low-Level-Vorteile, die eine direkte Implementierung mit Lucene mit sich bringt, werden zunichte gemacht, wenn sich in Ihrer Umgebung etwas ändert. Als Server isoliert Solr Sie von vielem davon und hilft Ihnen, der Versuchung zu widerstehen, optimistisch zu programmieren oder Abstraktionen zu überspringen. - Cloud-Readiness
Da große Datensätze in Umfang und Verteilung wachsen, werden Suchdienste auf einer viel höheren Abstraktionsebene benötigt, nicht nur über Daten und E/A, sondern auch für eine elastischere Verteilung von Suchressourcen und Operationen, d.h. Shards und Einfügungen/Aktualisierungen. Wenn sich Ihr Unternehmen in einer Situation befindet, in der die Hardware durch einen Übergang zu einer Art Cloud-Umgebung skaliert werden könnte, werden Sie von den kommenden Cloud-Funktionen von Solr profitieren, einschließlich verteilter Knotenverwaltung, Relevanzberechnungen über mehrere Sammlungen hinweg usw.
Es gibt viele gute Gründe, nicht von Lucene auf Solr zu migrieren, sei es wegen der Kosten eines neuen Abstraktionsmodells in Ihrer allgemeinen Anwendungsimplementierung oder weil Sie keinen wirklichen Bedarf für die Bereitstellung der Suche über HTTP haben. Durch die Zusammenlegung der Entwicklungsprojekte von Lucene und Solr werden Sie keine Abstriche bei der zugrunde liegenden Funktionalität machen müssen. Gleichzeitig bedeutet die stärkere funktionale Verwandtschaft zwischen den beiden aber auch, dass Sie sich Ihre langfristigen Einsatzziele genau überlegen müssen, um die richtige Lösung zu finden.
Simon Willnauer ist Lucene-Committer und Entwickler von Suchanwendungen und lebt in Berlin.