Apache Solr

Apache Solr ist die führende Open Source Enterprise Search Plattform und basiert auf der Lucene Volltextsuche. Der Gartner Magic Quadrant for Enterprise Search 2015 führt das auf Solr basierende LucidWorks Fusion als Top Challenger.

Solr kann entweder als eigenständiger Server, als Service (innerhalb eines Servlet Container wie z.B. Apache Tomcat) oder embedded als Teil einer J2EE Applikation betrieben werden.

Der zentrale Nutzen liegt in einer extrem schnellen und flexiblen Volltextsuche von indizierten Dokumenten. 

Solr Kernfunktionalitäten sind:

  • Sprachsensitive Volltextsuche mit Wildcard Matching
  • Unterstützung großer Datenmengen
  • Standardbasierte offene Schnittstellen (XML, JSON, HTTP)
  • Administration und Monitoring über Web-Interface
  • Skalierbarkeit und Ausfallstoleranz durch Cluster-Unterstützung.
  • Plattformunabhängigkeit und Erweiterbarkeit durch Plugin-Architektur

Solr erlaubt es, Suchanfragen beinahe in Echtzeit zu beantworten. Aus der praktischen Erfahrung empfiehlt sich aber dabei ausreichend Hauptspeicher (RAM) und schnelle IO (SSDs) bereitzustellen.

Die Such-Sprache ist dabei entfernt verwandt mit SQL, besitzt aber durch den Fokus auf die Volltextsuche einige syntaktische Unterschiede und Besonderheiten.

Speziell folgende Features können die Mächtigkeit der Suche noch weiter erhöhen:

  • Pivot Faceting
  • flexible Funktionen als Pseudo-Felder
  • Unterabfragen und Pseudo-Joins
  • Unterstützung von GIS-Feldern und Datumszeiträumen
  • Relevanz-Funktionen und weitere statistische Felder

Auch der Indizierungsprozess ist sehr schnell. In der Praxis sollte aber gerade für große Datenmengen ein entsprechender Batch-Prozess (ETL) mit Transaktionshandling verwendet werden. Versionierung, Optimistic Locking sowie atomares Update werden unterstützt.

Eine Solr Instanz kann (im wesentlichen) beliebig viele Kerne beinhalten, wobei jeder Kern seine eigenen Felder für die Suche und für zusätzlich gespeicherte Daten definiert. Eine Vielzahl möglicher Datentypen wird unterstützt.

Solr ist hochgradig konfigurierbar und kann dadurch auch für fordernde Szenarios gut optimiert werden. Sinnvolle Default-Einstellungen erlauben jedoch einen schnellen Einstieg in die Materie. 

Config-Files sind in XML-Syntax verfasst und werden gegebenenfalls ergänzt mit simplen Textfiles, welche Aufzählungen von Wörtern und Mustern enthalten, die speziell zu verarbeiten sind.

Zur Zeit (Version 5.3) ist es (Z.B. mittels Web-Interface) zwar möglich, neue Kerne anzulegen, die entsprechenden Konfigurationen müssen aber vorher am Filesystem bereits vorhanden sein. Es handelt sich daher eher um ein Hinzufügen von bestehenden Kernen zu einem Server als um ein echtes Anlegen, was manueller (oder per ETL automatisierter) Intervention bedarf. 

Die Interaktion mit Solr kann weitestgehend über HTTP (REST ähnliche API) erfolgen, wobei man die den Befehl / die Query spezifiziert, sowie das erwünschte Rückgabeformat (XML, JSON, CSV, Binary).

Für eine etwas engere Interaktion mit dem IT-Ökosystem stehen Bibliotheken in einer Vielzahl von Programmiersprachen zur Verfügung: Java, Javascript, Python, Ruby, Rails, .NET, C#, PHP, Perl.

Die Java-API SolrJ hat dabei den Vorteil, dass sie die Verwendung von Solr sowohl als eigenständigen Server als auch  embedded über das selbe Interface erlaubt. Diese Variante wird z.B. auch von Colibri-ETL* verwendet, um Solr flexibel über einen ETL Prozess mit Daten aus verschiedenen Quellen zu beladen.

Bezüglich Security zeigt sich Solr agnostisch und lagert diese Fragen an den Application-Server bzw. die einbindende Applikation aus.

Aufgrund der großen Community um Solr gibt es jede Menge fertiger Plugins, um Funktionserweiterungen durchzuführen. Weiters ist es durch die standardisierte Plugin-Architektur nicht weiters schwierig, selbst Plugins zu entwicklen - entsprechendes Java Know-How vorausgesetzt.

Die Dokumentation befindet sich auf einem hervorragenden Level. Allein der aktuelle Reference-Guide besitzt 577 Seiten.

Wichtigste kommerzielle Firma hinter Solr ist LucidWorks mit Sitz in San Francisco.

* Colibri BI ist die Open-Source Variante zur Jedox BI Suite, wird maßgeblich in Wien entwickelt und bietet ein webbasiertes ETL (Extract Transform Load) Interface für Datentransfer-Prozesse jeglicher Art.

Bewertung 8: Unterstützte Standards:

  • XML
  • JSON
  • HTTP

Vitalität sehr hoch: Starke Community unter dem Dach der Apache Foundation mit kommerziellen Firmen und Inverstment-Partnern im Hintergrund.

Wird von vielen bekannten Plattformen im Hintergrund verwendet: Reddit, Netflix, Instagram, ...

Es existieren eine Reihe von Büchern und ausgiebige Online-Ressourcen zu dem Thema.

Aktuell ist Solr 5.3. An den nächsten Versionen wird bereits aktiv gearbeitet.

Technologie: Java EE.

Detaillierte technische Specs, siehe http://mirror.reverse.net/pub/apache/lucene/solr/ref-guide/apache-solr-ref-guide-5.3.pdf

Lizenz: Apache License Version 2.0.

Support: Die Community gibt Support über Mailing-Listen sowie verschiedenen Tutorials hoher Qualität.

Folgende Liste gibt einen (unvollständigen) Überblick über für internationalen Support verfügbare Firmen: https://wiki.apache.org/solr/Support

Lokales Know How in Wien mit Supportmöglichkeit ist vorhanden.

http://lucene.apache.org/solr/

https://lucidworks.com/

https://wiki.apache.org/solr/SolrPlugins

https://cwiki.apache.org/confluence/display/solr/Client+API+Lineup

http://blogs.avalonconsult.com/blog/search/solr-in-gartner/

http://blog.smartbear.com/open-source/solr-the-most-important-open-source-project-youve-never-heard-of/

http://colibri.proclos.com