zend lucene Problem mit dem Wort "Hypothek"

9

Ich benutze Porter Stemmer, um die Wörter einzugrenzen, und hier ist ein Problem, in das ich hineingeraten bin:

Word "Hypothek" ist korrekt zu "Mortgag" stammte Wort "Hypothekengläubiger" ist (wohl fälschlicherweise) auf "Hypothek"

zurückzuführen

Es gibt ungefähr 100 Dokumente mit dem Wort "Hypothek" Es gibt 1 Dokument mit dem Wort "Hypothekengläubiger"

Wenn ich einen Index aufstelle, ohne "Hypothekengläubiger" in irgendwelche Dokumente zu setzen, dann läuft alles gut: Suche nach "Hypotheken" oder "Hypotheken" oder "Hypotheken" gibt alle 100 Dokumente zurück.

Wenn ich einen Index erstelle und eines der Dokumente "Hypothekengläubiger" enthält, gibt die Suche im Index für "Hypothek" nur ein einziges Dokument mit "Hypothekengläubiger" zurück (was auf "Hypothek" zurückgeführt wurde). Die Suche nach "Hypotheken" oder "Hypotheken" gibt jedoch alle 100 Dokumente zurück.

Die einzige logische Schlussfolgerung, die ich aus diesem Problem ziehen kann, ist, dass Lucene zuerst nach dem Wort mit dem Vorstiel sucht, und wenn es keine Ergebnisse findet, sucht es weiter nach dem Stammwort. So findet man bei der Suche nach "Hypotheken" zuerst die "Hypothek", die vom "Hypothekengläubiger" stammt, und hört auf zu suchen. Ist das das richtige Verhalten oder ist es ein Fehler?

    
Mike Chimirev 21.12.2009, 19:18
quelle

1 Antwort

1

Das klingt nach einem Fehler für mich. Ein Leitsatz der Lucene-Suche besagt: "Suchen Sie mit dem gleichen Analysator, den Sie für die Indizierung verwendet haben, es sei denn, Sie haben einen wirklich guten Grund, dies nicht zu tun". Nach der Analyse und Stemming sollte Lucene Übereinstimmungen für Suchbegriffe zurückgeben, die es hat.

In Ihrem Fall wurde "Hypothek" während der Indizierung in "Hypotheken" umgewandelt. Der Retrieval-Prozess sollte dies widerspiegeln und auch "Hypotheken" in "Hypotheken" umwandeln und dann die Übereinstimmungen für "Hypotheken" (die "Hypotheken" darstellen) finden.

Es scheint so zu sein, dass Sie während der Suche die Abfrage nicht blockieren, was zu fehlerhaften Ergebnissen führt. Wenn diese Antwort unklar ist, bearbeiten Sie Ihre Frage und fügen Sie ein paar Codezeilen hinzu, die beschreiben, wie Sie den Index erstellen und wie Sie ihn suchen.

    
Yuval F 22.12.2009 09:26
quelle

Tags und Links