Wörterbuch
Alternativ dazu gibt es für Deutsch ein LGPL lizensiertes Wörterbuch von Uwe Schindler, das wiederum auf allen Elasticsearch-Nodes abgespeichert werden muss. Mapping und Abfrage sehen damit so aus:
PUT dictionary
{
"settings": {
"number_of_shards": 1,
"analysis": {
"filter": {
"german_filter": {
"type": "hyphenation_decompounder",
"word_list_path": "dictionary-de.txt",
"hyphenation_patterns_path": "hyph/de_DR.xml",
"only_longest_match": true,
"min_subword_size": 4
}
},
"analyzer": {
"german_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"german_filter"
]
}
}
}
}
}
GET dictionary/_analyze
{
"analyzer" : "german_analyzer",
"text" : "Volltextsuche"
}
Resultat:
{
"tokens" : [
{
"token" : "volltextsuche",
"start_offset" : 0,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "voll",
"start_offset" : 0,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "text",
"start_offset" : 0,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 0
},
{
"token" : "suche",
"start_offset" : 0,
"end_offset" : 13,
"type" : "<ALPHANUM>",
"position" : 0
}
]
}
Als Alternative zu Wortlisten oder Wörterbüchern gibt es von Jörg Prante auch ein regelbasiertes Elasticsearch Plugin für Deutsch. Allerdings wird aktuell 6.3 als neueste Version unterstützt, weshalb wir es hier nicht praktisch ausprobieren. Ob die zusätzliche Abhängigkeit, die immer exakt zur Elasticsearch-Version passen muss, aufwiegt, dass man nur mit Regeln auskommt, muss wohl jedes Projekt individuell entscheiden.
Fin
Und damit schließen wir unseren kurzen Überblick, mit deutschen Komposita zu arbeiten, bereits wieder ab. Es gibt noch deutlich mehr Konfigurationsoptionen, aber hier haben wir uns auf die Minimalbeispiele konzentriert. Welcher Ansatz der Beste ist, kommt immer auf die jeweiligen Anforderungen an. Oder um es mit der Lieblingsphrase jedes IT-Consultants zu sagen: It depends...