Ich habe den Namen Audioslave
indiziert auf Solr und ich möchte dieses Dokument mit der Abfragezeichenfolge Audio Slave
übereinstimmen.So ignorieren Sie Leerzeichen auf Solr-Abfrage
Ich habe folgende Regel konfiguriert:
<fieldType name="text_filter" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
catenateWords="1"
catenateNumbers="1"
catenateAll="1"
preserveOriginal="1"
generateWordParts="1"
generateNumberParts="1"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"
catenateWords="1"
catenateNumbers="1"
catenateAll="1"
preserveOriginal="1"
generateWordParts="1"
generateNumberParts="1"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
Und ein Feld, um es mit:
<field name="artist_name_filter" type="text_filter" multiValued="false" indexed="true" stored="true" required="false" />
Wenn Solr Analyse-Tool alles sieht gut aus.
Der Teil Abfrage ist die folgende:
- Die KeywordTokenizerFactory
Audio Slave
erzeugt, - Dann wird die WordDelimiterFilterFactory es spaltet sich in
Audio Slave
,Audio
,AudioSlave
undSlave
(lässt nur die 3. Spalte verwenden (AudioSlave
) von hier - Die TrimFilterFactory behält sie als
AudioSlave
- Schließlich der LowerC aseFilterFactory es
audioslave
Auf der anderen Seite zu ändern, wird der Indexteil ist:
- Die KeywordTokenizerFactory
Audioslave
erzeugt, - Dann wird die WordDelimiterFilterFactory und TrimFilterFactory hält es als
Audioslave
- Schließlich wird die LowerCaseFilterFactory ändern Sie es in
audioslave
So sollten beide Felder übereinstimmen, aber die Abfrage gibt keine Ergebnisse:
http://localhost:8983/solr/search_api/select?defType=edismax&fq=type:Artist&q=Audio%20slave&qf=artist_name_filter&wt=json
Ja, entkommt der Raum funktioniert. – dcarneiro