2012-07-11 10 views
5

Ich verwende ElasticSerach und ich möchte grundlegende Stemming für Englisch einrichten. Also im Grunde, Kämpfer zurück Kampf oder irgendein Wort, das die Wurzel des Kampfes enthält.ElasticSearch Stemming

Ich bin ein wenig verwirrt, wie dies zu implementieren ist. Ich habe die Analysatoren, Tokenizer und Filter durchgelesen und es gibt mehrere Stemming-Algorithmen, die in ElasticSearch verwendet werden können. Ich bin mir nicht sicher, welche Kombination ich verwenden soll - Schneeball, Stemmer, Porter Stiel oder Synonymfilter.

Auch ein Beispiel für das Mapping wäre sehr hilfreich.

Antwort

15

Bitte beachten Sie die difference between stemming and lemmatisation. Der Stemming-Algorithmus wendet eine Reihe von Regeln (und/oder Dictionary-Lookups an, wie dies beispielsweise für KStem der Fall ist) und garantiert nicht, dass das Ergebnis eine richtige linguistische "Wurzel" (d. H. Lemma) ist. So werden zum Beispiel beide Wörter 'marinate' und 'marines' von 'Porter stemmer' in 'marin' umgewandelt, der als ziemlich 'aggressiv' angesehen wird - es erzeugt den gleichen Stamm für eine große Anzahl von Wörtern . Es gibt konservativere, wie beispielsweise den S-Stemmer, der nur Plural in Singularformen umwandelt().

Vergleiche von Stemming-Methoden, die in wissenschaftlichen Arbeiten gefunden wurden, scheinen KStem am effektivsten für englische Texte zu sein, aber die Wahl des Stemmers hängt stark vom Vokabular Ihrer Dokumente ab. Sie wollen nicht die Leistung der Stemmer optimieren, sondern die Leistung der Suchmaschine. Daher ist es in der Praxis keine gute Idee, sie in Abgrenzung von anderen Elementen Ihres Systems (insbesondere der Abfrageerweiterung) zu messen.

Die beste Lösung ist es, eine Reihe verschiedener Stemmer zu testen, die in elasticsearch verfügbar sind (ein Beispielmapping ist zu sehen here) und beobachten Sie die Präzision und den Abruf der Ergebnisse. Wenn Sie keine Testsuite mit Abfragen haben, ist es am besten, "typische" Abfragen durchzuführen und auf "seltsame" Ergebnisse zu achten (die Auswirkungen des Stemmers sind zu aggressiv) oder "gute" Ergebnisse werden weggelassen (zu konservativ) stemmer).