2016-08-24 5 views
0

Ich habe 4 Dokumente, die jeweils die folgenden 4 Texte enthalten.Stemming Suche mit SnowballPorterFilterFactory scheint weniger Ergebnisse

  • xxx tun xxx
  • xxx tut xxx
  • xxx hat xxx
  • xxx xxx tun

Jetzt führe ich eine Suche nach dem Text " tun" mit der SnowballPorterFilterFactory Filter und erwarten, alle oben genannten 4 Dokumente zu suchen. Es werden jedoch nur die folgenden Dokumente gesucht.

  • xxx xxx tun
  • xxx xxx tun

Aber wenn ich versuche, die Suche nach dem Text "refactor", alle Dokumente, die Texte "refactor" enthält, "refactors "," refaktoriert "oder" refactoring "werden gesucht.

Warum durch den Text nicht die Suche „ tun“ können die Dokumente nicht zurück „tut“ und „tat“ enthalten? Ist das Wort "do" etwas Besonderes und sollte nicht den SnowballPorterFilterFactory Filter verwenden?

Danke.

Antwort

1

Ich bin nicht so überrascht: Alle Formen von do werden als Stoppwörter in der Stopword-Liste erklärt, die mit dem Schneeballfilter in Lucene geliefert wird, also war ihnen dieser Fall wahrscheinlich egal.

So ist es mehr oder weniger konsistent mit ihren Absichten.

Sie können entweder: * verwenden Sie eine StopFilterFactory mit der zur Verfügung gestellten englischen_stop.txt (lesen Sie den Kommentar am Anfang der Datei über das Format zu verwenden); Beachten Sie, dass die Suche nach nur dem Begriff do/doing/did nicht funktioniert (aber ich denke nicht, dass es ein Anwendungsfall ist), aber sie werden ignoriert, wenn sie Teil einer größeren Suche sind und Ihr Problem damit gelöst wird. * deklarieren Sie sie als Synonyme mit einer SynonymFilterFactory.

So oder so, willkommen in der wunderbaren Welt der Stemming: Es ist wirklich kein einfaches Thema.

+0

Danke für die Erklärung und die Lösungen. Ich werde sie später versuchen. Und danke für die Begrüßung,^_ ^. –