La tige Solr Snowball est incompatible avec l'espagnol
-
28-10-2019 - |
Question
J'ai ce champ dérivé:
<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>
Le résultat attendu de la requête de recherche alquileres
(rents) serait une correspondance avec alquiler
(rent).Mais lorsque je vais à "Field Analysis" sur le site d'administration de Solr, et que je vérifie une valeur d'index de alquiler
et une valeur de requête de alquileres
, ce qui suit se produit:
- Lors de l'indexation du
alquiler
, il est transformé enalquil
. - Lors de l'interrogation de
alquileres
, il est transformé enalquiler
.
Ainsi, le cas simple de rechercher la forme plurielle d'un mot (alquileres
) ne correspondrait pas à sa forme singulière (alquiler
).
L'index et la requête ne devraient-ils pas être issus du même radical (alquiler
ou alquil
)?Est-ce une limitation de l'algorithme ou un malentendu / mauvaise configuration de ma part?
La solution
Le radical Snowball est très limité ... Vous obtiendrez de meilleurs résultats en utilisant un dictionnaire (Hunspell stemmer): http://wiki.apache.org/solr/Hunspell
Autres conseils
Ce lien fonctionne correctement pour alquileres
J'utilise hunspell d'Openoffice et il fait un excellent travail.
Mon exemple:
URL-Elastic/_analyze?analyzer=es_AR&text=alquileres
Et retour:
{
tokens:
[
{
token: "alquiler",
start_offset: 0,
end_offset: 10,
type: "<ALPHANUM>",
position: 1
}
]
}