Solr Snowball не соответствует испанскому - PullRequest
4 голосов
/ 05 декабря 2011

У меня есть это поле:

<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>

Ожидаемый результат поискового запроса alquileres (аренда) будет соответствовать alquiler (аренда).Но когда я захожу в «Анализ поля» на сайте Solr Admin и проверяю значение индекса alquiler и значение запроса alquileres, происходит следующее:

  • При индексации alquiler, он получает alquil.
  • При запросе alquileres он получает alquiler.

Таким образом, простой случай поиска формы множественного числаСлово (alquileres) не будет соответствовать своей единственной форме (alquiler).

Разве индекс и запрос не могут быть заключены в одну и ту же основу (либо alquiler, либо alquil)?Это ограничение алгоритма или недоразумение / неправильная конфигурация с моей стороны?

Ответы [ 3 ]

2 голосов
/ 21 июня 2013

Эта ссылка работает правильно для alquileres

http://www.molinolabs.com/lematizador.html#alquileres

1 голос
/ 07 декабря 2011

Использование снежного кома очень ограничено ... Вы могли бы получить лучший результат, используя словарь (Hunspell stemmer): http://wiki.apache.org/solr/Hunspell

0 голосов
/ 05 октября 2015

Я использую hunspell из openoffice, и он отлично справляется со своей работой.

Мой пример:

URL-Elastic/_analyze?analyzer=es_AR&text=alquileres

И возврат:

{
  tokens:
  [
    {
      token: "alquiler",
      start_offset: 0,
      end_offset: 10,
      type: "<ALPHANUM>",
      position: 1
    }
  ]

}

Ссылка: https://www.openoffice.org/download/index.html

...