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:
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.