6 Stimmen

Wie kann man das Ergebnis in Solr stoppen, wenn die Phrase ein Stoppwort enthält?

Ich habe ein Problem bei der Suche mit Solr nach einer Phrase, die Stoppwörter enthält. Solr sendet Ergebnisse mit Stoppwörtern und das ist nicht die von mir erwartete Ausgabe.

Ich habe das Wort "Test" in stopwords.txt Datei. Unter schema.xml Datei habe ich das Feld wie

<field name="searchword" type="text" indexed="true" stored="true"   />

Ich habe einige Daten indiziert und dann versucht, im Solr-Browserfenster wie folgt zu suchen: Suchbegriff: "test" und ich habe kein Ergebnis erhalten. Dann wieder gab ich eine Phrase wie Suchbegriff: "Testdaten" und ich habe das Ergebnis erhalten. Wie lässt sich ein solches Szenario vermeiden? Wenn es ein Stoppwort enthält, sollte Solr kein Ergebnis liefern. Wie kann man das Ergebnis in Solr stoppen, wenn die Phrase ein Stoppwort enthält?

Ich verwende den folgenden fieldType:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
    </analyzer>
    <analyzer type="query">         
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/>
    </analyzer>
</fieldType>

Ich brauche eine Lösung für Solr liefert keine Ergebnisse, wenn ich eine Phrase eingebe, die das Stoppwort enthält (Test)

1voto

Hugo Zaragoza Punkte 587

Ein "Stopp"-Wort ist ein Wort, das bei einer Suche nicht berücksichtigt wird; es ist kein Wort, das Ergebnisse "stoppt" oder ungültig macht. Das von Ihnen beschriebene Verhalten ist also korrekt: Stoppwörter sollen genau das bewirken.

In SOLR gibt es meines Wissens keine Möglichkeit, die Anzeige der Ergebnisse bei Verwendung eines bestimmten Wortes zu "stoppen" (vielleicht hat jemand eine Idee?).

Das Einzige, was mir einfällt, ist: - Schicken Sie die Abfrage nicht an SOLR, wenn Sie diese Begriffe in der Abfrage beobachten :) - Entfernen Sie die Begriffe aus den Dokumenten, bevor Sie sie indizieren (z. B. mit einem UpdateRequestProcessor), und verwenden Sie AND-Abfragen. Auf diese Weise erhalten Sie null Ergebnisse, wenn ein nicht indizierter Begriff in der Abfrage auftaucht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X