Solr-Tokenizer

Solr CharFilter – Wann werden sie eingesetzt?

Es kommt häufig vor, dass unsere Daten ungewünschte Zeichen enthalten. Beispielsweise könnte es in einem Datensatz viele Namen mit fremdsprachlichen Sonderzeichen wie Jiří, Tomáš oder Eliška geben, sodass sie sich nicht mit einfachen Suchanfragen wie Jiri oder Tomas finden lassen. Solche Probleme lassen sich jedoch mit CharFiltern in Solr lösen.

Was sind CharFilter?

Als CharFilter versteht sich eine Komponente, die die jeweiligen Zeichenketten in den Daten bei der Vorverarbeitung analysiert. Als Input erhält der CharFilter die Zeichenkette, die verarbeitet werden soll (z. B. „Tomáš“). Zum Schluss bekommt man die veränderte Zeichenkette als Output.

Sollen bestimmte Zeichen im ganzen Datensatz also normalisiert werden, dann ist der CharFilter erforderlich. CharFilter können Zeichen im Datensatz ändern, hinzufügen oder entfernen wie im folgenden Beispiel:

Eingabe:
Søren Dvořák hat zwei Telefonnummern: 0165-2345678 und 0165-235-6777

Konfiguration mit Char-Filter:
– Alle Sonderzeichen wie ø oder ř müssen vermieden werden.
– Der Bindestrich bei der Telefonnummer muss gelöscht werden.

Ausgabe:
Soren Dvorak hat zwei Telefonnummern: 01652345678 und 01652356777

Im obigen Beispiel ist zu erkennen, dass Vor- und Nachname bei der Eingabe viele Sonderzeichen enthalten. Außerdem ist das Muster der Telefonnummer uneinheitlich. Damit diese Namen auch mit normalen Zeichen wie „o“ oder „r“ gefunden werden können und nur ein Muster für die Telefonnummer im Datensatz verwendet wird, kommen die CharFilter bei der Konfiguration zum Einsatz. Zum Schluss erhält man bei der Ausgabe lediglich eine Zeichenkette ohne Sonderzeichen und mit einheitlichem Telefonnummernmuster.

Welche CharFilter gibt es in Solr?

In Solr stehen vier verschiedene CharFilter zur Verfügung. Im Folgenden werden die drei relevantesten Filter näher beleuchtet.

PatternReplaceCharFilterFactory

Dieser Filter dient zur Entfernung bzw. Änderung der Zeichenmuster.
Ein Beispiel: Das Präfix „zer-“ sollte im ganzen Datensatz weggelassen werden. Der Wortstamm soll jedoch enthalten bleiben (zerlegen -> legen). In diesem Fall können wir den PatternReplaceCharFilter nutzen:

Eingabe: zerlegen
Ausgabe: legen

Auch die Reihenfolgen bestimmter Zeichenmuster lassen sich anhand des PatternReplaceCharFilters ändern, wie im folgenden Beispiel:

Eingabe: 21.Jan.1995
Ausgabe: 1995.Jan.21

Wann wird der PatternReplaceCharFilter eingesetzt?
> Bei Daten mit unterschiedlichen Schreibweisen wie Telefonnummer, Datum etc.
> Bei Daten mit uneinheitlichen Zeichen wie z. B. $ statt Dollar

HTMLStripCharFilterFactory

Dieser Filter entfernt HTML-Zeichen sowie XML-Markup aus der Zeichenkette und zeigt eine andere Zeichenkette ohne HTML und XML an.

Eingabe:   <a href=“www.shi-gmbh.com“>SHI Webseite</a>
Ausgabe: SHI Webseite

Wann wird der HTMLStripCharFilter eingesetzt?
> Daten mit HTML-Code, wie beispielsweise Website-Links

MappingCharFilterFactory

Mit diesem Filter werden einzelne, ungewünschte Zeichen durch andere Zeichen ersetzt. Beispielsweise sollen fremdsprachliche Sonderzeichen in die normalen deutschen Buchstaben umgewandelt werden (wie von é zu e).

Eingabe: Søren Dvořák
Ausgabe: Soren Dvorak

Wann wird der MappingCharFilter eingesetzt?
> Bei Daten mit fremdsprachlichen Sonderzeichen bzw. Eigennamen wie příjmení oder Århus 

CharFilter, Tokenizer und Filter für Ihren Anwendungsfall

CharFilter sind in Solr ein wichtiges Werkzeug, um Zeichenketten für die weitere Verarbeitung vorzubereiten. Die genannten Einsatzmöglichkeiten sind dabei als Beispiele zu sehen. Es gibt noch viele weitere Gelegenheiten, CharFilter sinnvoll einzusetzen. Kommen Sie mit Ihrer konkreten Problemstellung gerne auf uns zu.

Für die Verarbeitung von Texten bietet Solr außer den CharFiltern eine Reihe weiterer Werkzeuge wie Tokenizer und Filter. Zur Wahl des richtigen Tokenizers haben wir Ihnen im Blogbeitrag Tokenizer bereits eine Übersicht erstellt. Einen Überblick über alle verschiedenen Möglichkeiten der Textverarbeitung in Solr erhalten Sie in unserer Schulung.

Sie haben Fragen zu Solr oder benötigen Unterstützung?
Jirayu Tharincharoen

Jirayu Tharincharoen