4

我有这个词干领域:

<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(rents) 的预期结果将是alquiler(rent) 的匹配项。但是当我进入 Solr 管理站点中的“字段分析”并检查 的索引值alquiler和查询值时alquileres,会发生以下情况:

  • 编制索引时alquiler,它会变成alquil.
  • 查询时alquileres,它会变成 alquiler.

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

索引和查询不应该被提取到同一个词干(alquiler或者alquil)吗?这是算法的限制还是我的误解/错误配置?

4

2 回答 2

1

雪球词干非常有限......使用字典(Hunspell 词干分析器)可以获得更好的结果:http ://wiki.apache.org/solr/Hunspell

于 2011-12-07T15:57:20.433 回答
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

于 2015-10-05T19:09:17.393 回答