Spring Data und Apache Solr

Spring Data und Apache Solr

Christoph Strobl


Wenn wir von polyglotter Persistenz [1] sprechen, dann stecken hinter diesem Begriff zumeist viele verschiedene Technologien, die gemeinsam zum Einsatz kommen: Einkäufe im Warenkorb des Benutzers werden in Key-Value Stores gehalten, Empfehlungen aufgrund des Einkaufverhaltens anderer Kunden in Graphendatenbanken, Verlaufsdaten der letzten zehn Jahre in Big­tables uvm.

Die relationale Datenbank spielt in einem solchen Szenario weiterhin eine Rolle, wenngleich sie nicht mehr als Allheilmittel für jedwede Art der Datenspeicherung gilt. Datenbanksuchen für Autovervollständigung oder gar Volltextsuche sind wenig performant und belasten die Komponenten der Applikationsinfrastruktur. Abhilfe schafft hier beispielsweise der Apache-Solr-Suchserver, welcher genau jene Aufgaben schnell und effizient übernehmen kann.

Im Folgenden wollen wir aus dem im Solr Download Package enthaltenen Beispielschema und Daten eine auf Spring MVC und jQuery basierte Suchseite gestalten. Die Funktion ist an die ebenfalls in den Solr-Beispielen enthaltene Anwendung Solritas (Abb. 1) angelehnt.

Abb. 1: Solritas

Apache Solr

Apache Solr [2] ist, wie bereits einleitend erwähnt, ein Open-Source-Suchserver, der auf Lucene basiert. 2010 schlossen sich die beiden Projekte zusammen, und ein Jahr später, mit v.3.1, wurde die Versionsnummer von Solr an jene von Lucene angepasst [3]. Es ist wichtig zu wissen, dass Solr Dokumente speichert. Diese sind ausgeflachte Abbildungen der Objektstruktur des Domainmodells und nicht wie beispielsweise bei Elasticsearch [4] ganze Objektbäume. Es ist somit derzeit nicht oder nur über Umwege möglich, komplexe Objektgraphen mit Solr zu verwalten.

Die Struktur der Dokumente sowie die Datentypen der Felder werden in der schema.xml definiert. Für unser Beispiel werden wir die bereitgestellte Datei aus ­/examples/ verwenden. Der Aufbau der schema.xml ist denkbar einfach. Es ist notwendig, die verwendeten Datentypen zu definieren. Solr stellt hierfür bereits einige Typen wie solr.StrField für Strings bereit. Die Definition des Typs enthält oft auch die Anweisungen über Transformationen der Daten für Indizierung und Abfrage. So wird beispielsweise der Feldtyp lowercase in Listing 1 als einzelner lowered String verarbeitet. Die eigentliche Definition der Felder legt Feldname, Datentyp und weitere Merkmale fest. Das Feld id in Listing 1 ist vom Typ String, wird indiziert, im Abfrageergebnis zurückgegeben, ist verpflichtend und darf nur ein Element beinhalten. Elemente, für...

Spring Data und Apache Solr

Spring Data und Apache Solr

Christoph Strobl


Wenn wir von polyglotter Persistenz [1] sprechen, dann stecken hinter diesem Begriff zumeist viele verschiedene Technologien, die gemeinsam zum Einsatz kommen: Einkäufe im Warenkorb des Benutzers werden in Key-Value Stores gehalten, Empfehlungen aufgrund des Einkaufverhaltens anderer Kunden in Graphendatenbanken, Verlaufsdaten der letzten zehn Jahre in Big­tables uvm.

Die relationale Datenbank spielt in einem solchen Szenario weiterhin eine Rolle, wenngleich sie nicht mehr als Allheilmittel für jedwede Art der Datenspeicherung gilt. Datenbanksuchen für Autovervollständigung oder gar Volltextsuche sind wenig performant und belasten die Komponenten der Applikationsinfrastruktur. Abhilfe schafft hier beispielsweise der Apache-Solr-Suchserver, welcher genau jene Aufgaben schnell und effizient übernehmen kann.

Im Folgenden wollen wir aus dem im Solr Download Package enthaltenen Beispielschema und Daten eine auf Spring MVC und jQuery basierte Suchseite gestalten. Die Funktion ist an die ebenfalls in den Solr-Beispielen enthaltene Anwendung Solritas (Abb. 1) angelehnt.

Abb. 1: Solritas

Apache Solr

Apache Solr [2] ist, wie bereits einleitend erwähnt, ein Open-Source-Suchserver, der auf Lucene basiert. 2010 schlossen sich die beiden Projekte zusammen, und ein Jahr später, mit v.3.1, wurde die Versionsnummer von Solr an jene von Lucene angepasst [3]. Es ist wichtig zu wissen, dass Solr Dokumente speichert. Diese sind ausgeflachte Abbildungen der Objektstruktur des Domainmodells und nicht wie beispielsweise bei Elasticsearch [4] ganze Objektbäume. Es ist somit derzeit nicht oder nur über Umwege möglich, komplexe Objektgraphen mit Solr zu verwalten.

Die Struktur der Dokumente sowie die Datentypen der Felder werden in der schema.xml definiert. Für unser Beispiel werden wir die bereitgestellte Datei aus ­/examples/ verwenden. Der Aufbau der schema.xml ist denkbar einfach. Es ist notwendig, die verwendeten Datentypen zu definieren. Solr stellt hierfür bereits einige Typen wie solr.StrField für Strings bereit. Die Definition des Typs enthält oft auch die Anweisungen über Transformationen der Daten für Indizierung und Abfrage. So wird beispielsweise der Feldtyp lowercase in Listing 1 als einzelner lowered String verarbeitet. Die eigentliche Definition der Felder legt Feldname, Datentyp und weitere Merkmale fest. Das Feld id in Listing 1 ist vom Typ String, wird indiziert, im Abfrageergebnis zurückgegeben, ist verpflichtend und darf nur ein Element beinhalten. Elemente, für...

Neugierig geworden?


    
Loading...

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