2017-01-31 3 views
4

Ich habe eine Solr-Instanz mit einer Anzahl von Dokumenten und einem indizierten Feld.Solr Stoppwörter und leere Abfrage

Ich möchte jetzt eine Liste Stoppwörter auf der Abfrage zu Anstieg die Anzahl der Ergebnisse beantragen, durch vollständig zum Zeitpunkt der Abfrage ignoriert Wörter dieser Stoppwörter Liste aufgenommen.

Also in meiner Konfiguration verwende ich solr.StopFilterFactory in query Analysator.

Was ich erwarte, ist, dass, wenn ich eine Suche mit nur einem Wort in der Liste der Stoppwörter durchführe, das Ergebnis einer Wildcard-Abfrage entspricht, text_title:*, also die vollständigen Dokumente.

Aber stattdessen bekomme ich 0 Ergebnisse. Fehle ich etwas über das Verhalten des Stopwords-Filters?

Antwort

0

solr.StopFilterFactory

Dieser Filter verwirft oder stoppt Analyse, Token, die auf der angegebenen Stop-Wörter-Liste sind. Eine Standard-Stoppwörterliste ist im Solr-Konfigurationsverzeichnis namens stopwords.txt enthalten, das für den typischen englischen Text geeignet ist.

https://cwiki.apache.org/confluence/display/solr/Filter+Descriptions#FilterDescriptions-StopFilter

Dieser Filter tatsächlich Token entfernen, die in der Abfrage sind, ersetzen nicht mit *
Beispiel:

In: "To be or what?" 
Tokenizer to Filter: "To"(1), "be"(2), "or"(3), "what"(4) 
Out: "To"(1), "what"(4) 

Versuchen Sie, diese Filter zu verwenden.
solr.SuggestStopFilterFactory

Wie Stop-Filter, ist dieser Filter verwirft, oder stoppt Analyse, Token, die auf der angegebenen Stop-Wörter-Liste sind. Suggest Stop Filter unterscheidet sich von Stop Filter darin, dass das letzte Token nicht entfernt wird, wenn nicht ein Token-Trennzeichen folgt.

Normalerweise würden Sie den normalen StopFilterFactory in Ihrem Index-Analysator und dann SuggestStopFilter in Ihrer Query Analyzer.

Dieser Filter entfernt Stoppwort aus Ihrer Abfrage, wenn kein Token-Trennzeichen folgt.

Wie verwenden:

<analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SuggestStopFilterFactory" ignoreCase="true" words="stopwords.txt" format="wordset"/> 
</analyzer> 

Beispiel:

In: "The The" 
Tokenizer to Filter: "the"(1), "the"(2) 
Out: "the"(2) 
+0

danke für die Antwort, aber das ist nicht sinnvoll: mit einem Eingang "' der die'" und' die' in der Stoppwörter Liste, hätte ich gerne als Ausgabe "' * '", das sind alle Dokumente. –