【问题标题】:Solr Snowball stemmer is inconsistent with SpanishSolr Snowball 词干分析器与西班牙语不一致
【发布时间】:2012-01-13 06:20:34
【问题描述】:

我有这个词干字段:

<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)吗?这是算法的限制还是我的误解/错误配置?

【问题讨论】:

    标签: solr stemming porter-stemmer


    【解决方案1】:

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

    【讨论】:

    • 不知道。我一定会看一看的。谢谢!
    • 我尝试了 Hunspell,但它也遇到了同样的故障。 alquileres 不断演变为alquiler,alquiler 演变为alquil。我的王国需要一个体面的西班牙词干分析器!
    • 你可以试试solr.SpanishLightStemFilterFactory 吗?
    • @Chewie 我对“enfermería”的变体也有同样的问题,您找到解决方案还是关闭了词干提取?
    【解决方案2】:

    我使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 2017-08-14
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多