ich die folgende Typdefinition in Solr gemacht haben:Solr - KeywordTokenizerFactory - Exact Match für mehrere Wörter funktioniert nicht
<fieldType name="text_phrase" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>
Es sollte Indexwerte wörtlich (kein tokenization).
Ich füge den Wert "Skinny Jeans" zu meinem Index hinzu.
Wenn ich die folgende Suchabfrage (url zum Lesen decodiert) laufen bekomme ich keine Ergebnisse:
http://myvm:8983/solr/mycore/select?q=*:*&fq=name:("skinny jeans")&wt=json&indent=true&debugQuery=true
können Sie die URL sehen, ist für alles, was die Suche (*: *) mit einer Filterabfrage für der genaue Wert "Skinny Jeans".
ich dann den Wert „Jeans“ zu meinen Index hinzufügen und eine ähnliche Abfrage mit
&fq=name:("jeans")
laufen Und ich das „Jeans“ Element finden tun.
So funktioniert es für ein einzelnes Wort, aber nicht für mehrere Wörter. Warum sollte das sein? Ich suche schließlich nach einem genauen Wert. Es lässt mich vermuten, dass die KeywordTokenizerFactory etwas Seltsames macht. Kann jemand bitte mitteilen, warum von einer solchen Grundkonfiguration keine Ergebnisse zurückgegeben werden?
Danke,
Ah ich denke ich verstehe, sagst du, dass obwohl ich in meiner Anfrage den Ausdruck "Skinny Jeans" doppelt zitierte, wird es nicht tatsächlich als Phrase abgefragt, sondern eher als einzelne Tokens? – mils
Ja ... weil Tokes nicht auf diese Weise erstellt werden .... –
Wenn ich eine WhitespaceTokenizerFactory und ShingleFilterFactory auf der Abfrageseite verwendet, könnte ich ähnliche Ergebnisse bekommen wie ich danach suche? – mils