Ich benutze den deutschen Sprachanalysator, um einige Inhalte zu tokenisieren. Ich weiß, dass es im Grunde ein Makrofilter für "Kleinbuchstaben", "German_Stop", "German_Keywords", "German_Normalization", "German_Stemmer" ist.Elasticsearch Wie konfiguriere ich Sprachanalysator (Deutsch) oder baue einen benutzerdefinierten Normalizer?
Mein Problem hat mit dem Nomalisierungsfilter zu tun. Hier ist der Elasticsearch Documentation und der Lucene Implementation des Filters. Das Problem ist, dass ae ue und oe wie die deutschen Buchstaben ä, ö und ü behandelt und daher in a, o, u umgewandelt werden.
Die zweite Transformation ist gut, aber die erste führt zu mehr Problemen, als sie löst. Es gibt normalerweise keine ae, ue, oe in deutschen Texten, die wirklich ä, ü, ö darstellen. Die meiste Zeit, die sie tatsächlich erscheinen, sind in ausländischen Wörtern, abgeleitet von Latein oder Englisch wie 'Aeodynamik' (Aerodynamik). Der Filter interpretiert dann "Ae" als "Ä" und wandelt ihn dann in "A" um. Dies ergibt 'Arodynamik' als Token. Normalerweise ist dies kein Problem, da das Suchwort auch mit diesem Filter normalisiert wird. Dies wird jedoch zu einem Problem, wenn es mit der Platzhaltersuche kombiniert wird:
Stellen Sie sich ein Wort wie 'FooEdit' vor, das wird zu 'foodit' tokenisiert. Eine Suche nach 'edit OR * edit *' (was meine normale Suche ist, wenn der Benutzer nach 'edit' sucht) wird kein Ergebnis ergeben, da das 'e' von 'edit' verloren gegangen ist. Da meine Inhalte so viele Wörter haben und die Leute nach Teilwörtern suchen, ist es nicht so sehr ein Randfall, wie es scheint.
Also meine Frage ist, gibt es eine Möglichkeit, die 'ae -> a' Transformationen loszuwerden? Mein Verständnis ist, dass dies Teil der German2 snowball algorithm ist, so dass dies wahrscheinlich nicht geändert werden kann. Bedeutet das, dass ich den ganzen Normalisierungsschritt loswerden muss oder kann ich meine eigene Version des Schneeballalgorithmus zur Verfügung stellen, wo ich nur die Teile abstreife, die ich nicht mag (habe keine Dokumentation gefunden, wie man einen Brauch benutzt) Schneeball-Algorithmus zur Normalisierung)?
Prost
Tom
Das Problem, glaube ich, ist, dass Wildcard, Fuzzy und Regex Abfrage Klauseln nicht analysiert werden, so 'Aerody *' passt nicht "Arodynamik" – femtoRgon
@ FemtoRgon Ich sehe, ich habe nicht richtig gelesen :( – Slomo