Solr Snowball Stemmerはスペイン語と矛盾しています
-
28-10-2019 - |
質問
私はこの茎のあるフィールドを持っています:
<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
).
インデックスとクエリの両方を同じステムに抑えるべきではありません(どちらも alquiler
また alquil
)?これはアルゴリズムの制限ですか、それとも私の部分からの誤解/誤解ですか?
解決
スノーボールの茎は非常に限られています...辞書(Hunspell Stemmer)を使用することで、より良い結果が得られます。 http://wiki.apache.org/solr/hunspell
他のヒント
このリンクは適切に機能します アルキルレス
私はOpenOfficeのHunspellを使用していますが、それは優れた仕事をしています。
私の例:
URL-Elastic/_analyze?analyzer=es_AR&text=alquileres
そして戻る:
{
tokens:
[
{
token: "alquiler",
start_offset: 0,
end_offset: 10,
type: "<ALPHANUM>",
position: 1
}
]
}
所属していません StackOverflow