Solr Stoppwörter Magie
Meine Stoppwörter nicht wie erwartet funktioniert.
Hier ist ein Teil von meinem schema:
<fieldType name="text_general" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType class="solr.TextField" name="text_auto">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramsIfNoShingles="false"/>
</analyzer>
<analyzer type="query">
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/>
</analyzer>
</fieldType>
<field name="deal_title_terms" type="text_auto" indexed="true" stored="false" required="false" multiValued="true"/>
<field name="deal_description" type="text_general" indexed="true" stored="true" required="false" multiValued="false"/>
In stopwords.txt ich habe weiter gesagt: das, ist, eine;
Auch ich habe die nächsten Daten in meinen Feldern:
deal_description - Dies ist meine Beschreibung
deal_title_terms - Das ist der deal-Titel a Bedingungen (werden aufgeteilt in den Bedingungen)
Wenn ich versuche zu suchen deal_description:
Beispiel 1: "deal_description: sein ist die m" - ich erwarte, dass das Dokument mit deal_description "Dies ist meine Beschreibung" zurückgegeben
Beispiel 2: "deal_description: ist th" - ich erwarte, dass nichts gefunden werden, weil "ist" und "die" sind Stoppwörter.
Wenn ich versuche zu suchen deal_title_terms:
Beispiel 1: "deal_title_terms: ist" - ich erwarte, dass nichts gefunden werden, weil "ist" stoppwort.
Beispiel 2: "deal_title_terms: ist der deal" - ich erwarte, dass "ist" und "das" ignoriert wird und der Begriff "Angebot" gefunden wird.
Beispiel 3: "deal_title_terms: Titel a Bedingungen" - ich erwarte, dass "a" werden ignoriert und der Begriff "Titel " Begriffe" gefunden werden.
Frage 1: Warum Stoppwörter nicht funktioniert für "deal_description" - Feld ?
Frage 2: Warum für das Feld "deal_title_terms" Stoppwörter nicht entfernt für meine Abfrage ?(Wenn ich versuche mich zu finden Titel a Bedingungen wird es nicht finden, "title Begriffe" Begriff)
Frage 3: gibt es eine Möglichkeit, zu zeigen, Stoppwörter in Suche Ergebnis aber verhindern, dass Sie suchen ? Beispiel:
Daten: Dies ist eine Coole Suchmaschine
Suchanfrage : "ist coo" -> return "Das ist cool search engine"
Suchanfrage : "ist" -> nichts zurückgeben
Suchanfrage : "Diese coll" -> return "Das ist cool search engine"
Frage 4: Wo finde ich eine detaillierte Beschreibung (vielleicht mit Beispielen), wie Stoppwörter arbeitet in solr ? Denn es sieht aus wie Magie.
- Zu beobachten, was passiert mit Ihren Fragen, können Sie mit der solr admin Seite : yourWebsite:8983/solr/#/yourCore/analysis. Stellen Sie Ihre Abfrage, und klicken Sie auf analysieren-Werte.
- Ich bin mit diesem tool. Mit diesem tool sehe ich, dass Stoppwörter entfernt wurden, die query analizer aus meiner Abfrage, aber ich immer noch in der Lage zu finden, "die", "ist" usw. In dem Fall, wenn ich Stoppwörter nur für meine query analizer.
- Was ist das Feld, das Sie verwenden, um Abfragen?
- Ich bin mit "deal_title_terms" mit, kommentierte stopFilterFactory für analyzer type="index". Nach dem Neustart solr und neuindizieren der Daten bin ich in der Lage zu finden, Zeichenfolgen wie "die". postimg.org/image/ixl40cspp
- Wenn Sie die edismax query parser, dann können Sie Stoppwörter nur sucht - das ist zu lösen, die "sein oder nicht sein" conumdrum.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort zu Frage 1 : Ersetzen von "KeywordTokenizerFactory", da es keine tatsächlichen tokenisierung, also die gesamte input-string ist bewahrt als ein einzelnes token.Verwenden StandardTokenizerFactory statt.
Oder verwenden Sie die unten fieldType.
Stoppwörter wie erwartet für die "deal_description" - Feld.
Antwort zu Frage 3 : ja. Fügen Sie die StopFilterFactory im analyzer type="query" nur. Es wird verhindert, dass Sie von der Suche und nicht indem Sie während der Indizierung.
Antwort zu Frage 4 : https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
Antwort zu Frage 2 : Das benutzerdefinierte Feld erstellt, indem Sie scheint nicht korrekt zu sein. Der text hat zu tokenised zunächst mit dem tokenizer, aber Sie sind mithilfe der Filter ersten.
Überprüfen Sie die Analyse mit solr Analyse Seite.