Apache Solr – DataImportHandler – Feinheiten

Nachdem ich in einem früheren Beitrag bereits die Grundladen erörtert habe, soll es hier nun um die Feinheiten und Ausnahmen beim Datenimport in den Apache Solr gehen.

Löschen vorhandener Einträge

Der DataImportHandler bietet die Möglichkeit beim Delta-Import auch Löschungen vorzunehmen. Dazu muss mit deletedPkQuery ein entsprechende Query definiert werden. Als Rückgabe wird der unique key des zu löschenden Dokumentes erwartet.


Splitten einer Ergebnisspalte in ein Array

Ist in der schema.xml ein Feld als multi-valued definiert müssen die Werte dafür einzeln angeliefert werden. Im Grundlagen-Artikel haben wir dazu bereits Möglichkeiten gesehen. Stehen die Werte in der Datenbank allerdings in einem Feld zum Beispiel Komma getrennt, dann müssen wir dem Solr sagen wie es getrennt werden soll.

Entscheidend ist zunächst einen transformer für die entity zu definieren. Dieser wird allerdings erst benutzt, wenn für ein Feld entsprechende Anweisungen existieren. In diesem Fall muss also explizit das Feld definiert werden. Mit splitBy wird dann ein regulärer Ausdruck angegeben, nach dem die Trennung erfolgt. Im Beispiel wird also foo|bar zu [foo, bar].


Aufteilen eines Feldes in mehrere

Durch reguläre Ausdrücken, können auch die Inhalte eines Feldes aus der Datenbank in mehrere Solr-Felder übertragen werden.

Hier wird als Quelle beide Male fullName genommen. Aber jeweils ein anderer Teil extrahiert. Im Zielfeld landet was innerhalb der Klammern im regulären Ausdruck steht. Es darf somit nur ein Klammernpaar verwendet werden.
Selbiges liese sich auch auf folgende Weise lösen:

Hier muss dann für jedes Klammerpaar eine Zielspalte in groupNames in der Reihenfolge der Klammern definiert werden.