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 Adminサイトの「FieldAnalysis」にアクセスして、のインデックス値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 に答える