Weihnachtsgeschenk

Apache Lucene und Solr 5.4 liegen unter dem Weihnachtsbaum

Uwe Schindler

Das Apache Lucene Team hat für alle Suchmaschinen-Begeisterten noch ein Geschenk unter dem Weihnachtsbaum: Apache Lucene und Apache Solr wurden in der Version 5.4.0 veröffentlicht.

Lucene 5.4

Wie immer sind die Änderungen im Bereich von Apache Lucene, der unter Apache Solr und Elasticsearch liegenden Volltextsuch-Bibliothek, gespickt von Neuerungen im Detail, welche Performanz und Speicherbedarf optimieren. So wurde die Ausführung des MatchAllDocQuery, welches oft im Umfeld von Solr für den facettenbasierten Drilldown ohne Volltextabfrage benutzt wird, deutlich optimiert. Aufgrund von Änderungen in der Querystruktur wurde dieser Abfragetyp seit der Einführung von Lucene 5 deutlich langsamer, da die dafür nötigen Optimierungen noch fehlten.

Der Grund war die Migration in Lucene weg von den klassischen Bitset-basierten Filtern als separates Abfragewerkzeug hin zur universelleren Klasse Query, welche aber bisher immer auch zwangsweise das Scoring machte. Hier hat Lucene 5.4 auch an anderen Stellen aufgeräumt, so dass nun die Filter-Klasse auch vollständig als “deprecated” markiert wurde.

Neuer Code sollte immer Query benutzen und diese in boolschen Abfragen zur Filterung markieren. Darüber hinaus erlauben weitere Optimierungen in der Speichernutzung von spaltenbasierten Felden (DocValues) mehr Durchsatz, weil der Garbage-Collector durch Off-Heap Strukturen entlastet wird.

Neuerungen gab es auch im Bereich der Text-Analyse und Tokenization: Lucene kann nun die serbische Sprache analysieren und ist in der Lage, mit einem weiteren Filter zahlreiche asiatische Ziffern auf ihr arabisches Pendant zurückzuführen. Somit ist es jetzt möglich, auch in Texten mit indischer Zahlschrift (u.a. bei Jahreszahlen aus dem Hinduistischen Kalender) darin enthaltene Terme auch mit arabischen Ziffern zu finden. Desweiteren gibt es einen neuen Tokenizer, welcher Text an der Unicode-Whitespace-Definition trennt. Dies ist hilfreich, wenn zum Beispiel HTML-Text mit vielen Non-Breaking-Spaces zerlegt werden soll. Die Java-Variante von Character.isWhitespace() sieht diese nämlich nicht als Leerzeichen an!

Zuletzt ist anzumerken, dass Lucene 5.4 schon jetzt unter Java 9 Jigsaw läuft. Es wurde an zahlreichen Stellen der Code so angepasst, dass auf Reflection an Klassen der Laufzeitumgebung komplett verzichtet wurde. Zudem sind alle möglicherweise sicherheitskritischen Codeteile korrekt gekapselt, so dass eine Verwendung von Lucene mit einem SecurityManager vereinfacht wurde. Es sind nur noch die nötigsten Rechte an den Code zu vergeben.

Solr 5.4

Apache Solr baut auf den Funktionen von Apache Lucene auf. Nach Download und Installation können die beschriebenen Lucene Features größtenteils auch gleich in Solr ausgenutzt werden. Ganz vorne stehen natürlich die Verbesserungen beim Drilldown, aber auch der geringere Speicherbedarf von DocValues-Feldern. Dieser Feldtyp wird vor allem beim Sortieren oder Aggregationen und Facettierung benutzt. Auf der Solr-Seite wurde auch hier noch weiter optimiert: Das neue Facetting-API kann hier bis zu 100% Geschwindigkeitssteigerung mit solchen Feldern erzielen.

Auch der Standard-QueryParser von Solr hat etwas neue Syntax spendiert bekommen: Filter können direkt im Query String angegeben werden; Vorher mussten diese als separate “fq”-Parameter in der URL mitgegeben werden. Ermöglicht wird dies durch die vorher beschriebene Zusammenlegung der Query- und Filter-Klassen. Als “Filter” markierte Abfrageteile können beliebig in die boolsche Struktur-Suche eingebaut werden, tragen aber nicht zum Score bei.

Zuletzt hat auch der offizielle SolrJ Java Client Unterstützung für Basic Authentication bekommen. Die neue AngularJS-basierte Admin-Oberfläche ist nun offiziell “ready to use” und wird in Solr 5.5 die alte ersetzen. Wenn man in den Weihnachtsferien etwas Zeit hat, sollte man diese einmal komplett durchtesten und eventuelle Fehler sofort melden.

Die Liste der Änderungen von Apache Lucene und Apache Solr sind auf der Projekt-Webseite zu finden. Viel Spaß bei der Suche nach dem Weihnachtsmann!

Geschrieben von
Uwe Schindler
Uwe Schindler
Uwe Schindler ist Mitglied des Project Management Committee im Apache-Lucene-Projekt. Er ist mit seiner Consulting-Firma SD DataSolutions GmbH in Bremen ansässig und kümmert sich am Zentrum für Marine Umweltwissenschaften (MARUM) um die Suche nach geowissenschaftlichen Daten in der Umweltdatenbank PANGAEA.Blog: http://blog.thetaphi.deTwitter: @ThetaPh1
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: