Solr Snowball Stemmer è incompatibile con lo spagnolo
-
28-10-2019 - |
Domanda
Ho questo campo di stelo:
<fieldtype name="textes" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords-es.txt" enablePositionIncrements="true"/>
<filter class="solr.SnowballPorterFilterFactory" language="Spanish" protected="protwords-es.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<filter class="solr.SnowballPorterFilterFactory" language="Spanish" protected="protwords-es.txt"/>
</analyzer>
</fieldtype>
Il risultato atteso della query di ricerca alquileres
(affitti) sarebbe una corrispondenza di alquiler
(affitto). Ma quando vado a "Field Analysis" nel sito amministratore di Solr e controllo un valore dell'indice di alquiler
e un valore di query di alquileres
, succede quanto segue:
- Durante l'indicizzazione
alquiler
, viene colpito inalquil
. - Durante la domanda
alquileres
, viene colpito inalquiler
.
Quindi il semplice caso di cercare la forma plurale di una parola (alquileres
) non corrisponderebbe alla sua forma singolare (alquiler
).
Se l'indice e la query non dovrebbero essere stesse nello stesso stelo ( alquiler
o alquil
)? È una limitazione dell'algoritmo o un malinteso/errata configurazione da parte mia?
Soluzione
La palla di neve che lo stabilisce è molto limitata ... otterresti un risultato migliore usando un dizionario (Hunspell Stemmer): http://wiki.apache.org/solr/hunspell
Altri suggerimenti
Questo link funziona correttamente per Alquileres
Uso Hunspell da OpenOffice e fa un lavoro eccellente.
Il mio esempio:
URL-Elastic/_analyze?analyzer=es_AR&text=alquileres
E ritorno:
{
tokens:
[
{
token: "alquiler",
start_offset: 0,
end_offset: 10,
type: "<ALPHANUM>",
position: 1
}
]
}
Collegamento: https://www.openoffice.org/download/index.html