I parametri SnowballporterFilterFilterFactory e Wildcard di Solr
-
28-09-2020 - |
Domanda
Sto avendo una query di problemi SOLR utilizzando il seguente tipo di campo:
<fieldType name="text_ci" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
</fieldType>
.
Come puoi vedere che applica la "snowballporterfilterfactory" durante l'indicizzazione e la loro interrogazione. Se indicizzo qualcosa come
.roba del mouse e divertimento
Get è indicizzato come:
Come puoi vedere la parola "mouse" viene trasformata in "mous" dalla "snowballporterfilterfactory". Che è ciò che vogliamo. Tuttavia, quando cerchiamo
.Mouse *
Non sembra applicare la "snowballporterfilterfactory" allo stesso modo. Immagino a causa del * alla fine.
La mia domanda è .. C'è un modo per rendere il "snowballporterfilterfactory" conoscere i caratteri jolly? Così quando query per
.Mouse *
Non ottengo 0 risultati.
Interessante se query per
.mous *
Il record torna.
o qualcuno può offrire un modo migliore per interrogare / indice questo tipo di campo?
Grazie Dave
Altri suggerimenti
L'ultima volta che controllo, quando si utilizzano i caratteri jolly, non viene utilizzato l'analizzatore di query.Quindi, dal momento che stai usando un livello inferioreCaseFilterFactory, i tuoi termini sono indicizzati in minuscolo e la ricerca di mous * non restituirà nulla.
Penso che l'unica cosa da fare quando si utilizza Wildcards è assicurarsi di adattare la tua query sul modo in cui i tuoi termini sono indicizzati (in un modo simile a ciò che il tuo analizzatore di query farebbe).