Bild-Schulung-Solr-in-a-Nutshell

Sprachidentifzierung mit Apache Solr

Johannes Brucher

Johannes Brucher

…ist nicht nur auf dem Gebiet Search & Analytics Spezialist, sondern fühlt sich ebenso im Bereich SHI Publishing Solutions zuhause. Geboren 1981 in Bayern, studierte er Bioinformatik mit Schwerpunkt Softwareengineering an der FH Weihenstephan in Freising. Seit über 10 Jahren bereichert er SHI mit seinen Fachkenntnissen, die er bei SHI von „Junior Consultant“ zum „Senior Technical Consultant“ ausbaute. Lieblings-Dateiformat: WAV, MOV, jar
Sprachidentifizerung mit Solr zur Indexierungszeit

Solr kann Sprachen während der Indexierung erkennen. Dazu benutzt man den langid UpdateRequestProcessor.
Hierzu werden zwei Implementierungen angeboten:
Das Feature von Tika Sprachen zu identifizieren: https://tika.apache.org/0.10/api/org/apache/tika/language/LanguageIdentifier.html
LangDetect Sprachidentifizierung basierend auf einer Java Library: https://code.google.com/p/language-detection/

Konfiguration des UpdateRequestProcessors:
Der UpdateRequestProcessor wird in der solrconfig.xml konfiguriert. Es muss zumindest ein Feld, welches Grundlage (also Input) der Sprachidentifizierung ist (langid.fl) und ein Feld, in dem für die Ausgabe der erkannten Sprache erfolgt (langid.langField), angegeben werden.
Beispiel einer minimalen Konfiguration:

<updateRequestProcessorChain name="langid">
<processor
class="org.apache.solr.update.processor.LangDetectLanguageIdentifierUpdateProcessorFactory">
<str name="langid.fl">text</str>
<str name="langid.langField">language_s</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
<

Die Einbindung in die Konfiguration eines DataImportHandlers sähe in diesem Fall wie folgt aus:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
<str name="update.chain">langid</str>
</lst>
</requestHandler>

In der Konfiguration des Sprachidentifizierers lassen sich noch zahlreiche Parameter festlegen. Die folgende Auswahl erhebt keinen Anspruch auf Vollständigkeit, soll aber einen Eindruck und Überblick darüber geben, was alles möglich ist.

  • langid.fallback:Möglichkeit eine Sprache anzugeben, die dafür benutzt wird, falls die Identifizierung nicht erfolgreich ist.
  • langid.whitelist:Angabe einer Liste von Sprachen, die ausschließlich zur Identifizierung überprüft werden.
  • langid.fallbackFields:Falls die Indentifizierung anhand definierter Input-Felder nicht erfolgreich ist, werden diejenigen Felder überprüft, die mit diesem Parameter angegeben werden.
  • langid.threshold:Ein Schwellenwert (floatzwischen 0.0und 1.0), der für eine erfolgreiche Identifizierung der Sprache erreicht werden muss
  • langid.map:Schaltet ein Feld-Mapping ein, welches dazu führt, dass das Sprachkürzel an das jeweilige Feld angefügt wird, in welchem eine Sprache identifiziert wurde: text àtext_de
  • langid.map.fl:Möglichkeit eine Liste von Felder anzugeben, bei denen Feld-Mapping durchgeführt werden soll, wenn diese sich von den Felder, die in langid.flfestgelegt wurden.

Weitere Parameter und Informationen sind im Solr Wiki zum Thema Language Detection verfügbar.