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.