我有这个词干字段:

<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 ) 不匹配。

    索引和查询不应该都归入同一个词干(alquileralquil )吗?这是算法的限制还是我的误解/错误配置?

    最佳答案

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

    关于Solr Snowball 词干分析器与西类牙语不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8386515/

    10-12 22:58