Solr Snowball stemmer与西班牙语不一致

时间:2011-12-05 14:07:21

标签: solr stemming porter-stemmer

我有这个词汇领域:

<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管理站点中的“字段分析”,并检查索引值alquiler和查询值alquileres时,会发生以下情况:

  • alquiler编制索引时,会将其纳入alquil
  • 查询alquileres时,它会被导入alquiler

因此,搜索复数形式的单词(alquileres)的简单情况与其单数形式(alquiler)不匹配。

索引和查询是否应该同时包含在同一个词干中(alquileralquil)?这是算法的限制还是我的误解/错误配置?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

雪球堵塞非常有限......使用字典(Hunspell stemmer)可以获得更好的结果:http://wiki.apache.org/solr/Hunspell

答案 2 :(得分:0)

我使用来自openoffice的hunspell,它做得非常出色。

我的例子:

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