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é en alquil.
  • Lors de l'interrogation de alquileres, il est transformé en alquiler.

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?

Était-ce utile?

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

http://www.molinolabs.com/lematizador.html#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
    }
  ]

}

Lien: https://www.openoffice.org/download/index.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top