Solr:3.5
您好,
我根据以下fieldType定义创建了一个荷兰字段类型:
<fieldType name="text_nl" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StemmerOverrideFilterFactory" words="lang/stemdict_nl.txt" ignoreCase="true"/>
<filter class="solr.SnowballPorterFilterFactory" language="Kp" words="lang/stemdict_nl.txt"/>
</analyzer>
</fieldType>
stemdict_nl.txt根据http://snowball.tartarus.org/algorithms/kraaij_pohlmann/stemmer.html算法使用45710个字规则。
大多数搜索查询似乎都运行正常,我得到了大多数正确的建议。
然而,当我搜索“etiketje”时会出现问题。根据我的规则:
etiket etiket
etiketten etiket
etiketteren etiketteer
etikettering etiketteer
etiketje etiket
它应该依赖于&#39; etiket&#39;。然而,除了它回归&#39; etik&#39;。当我分析我的领域时,SOLR返回:
etiketje
etiketje
etiketje
etiketje
etik
我希望SOLR能够分析Etiketje&#39;为:
etiketje
etiket
希望有人能指出我正确的方向。
答案 0 :(得分:0)
尝试将您的定义更改为wiki所示的确切语法,即更改
<filter class="solr.StemmerOverrideFilterFactory"
words="lang/stemdict_nl.txt" ignoreCase="true"/>
<filter class="solr.SnowballPorterFilterFactory"
language="Kp" words="lang/stemdict_nl.txt"/>
到
<filter class="solr.StemmerOverrideFilterFactory"
dictionary="lang/stemdict_nl.txt"/>
<filter class="solr.SnowballPorterFilterFactory"
language="Kp"/>
您在StemmerOverrideFilter上不需要ignoreCase=true
,因为无论如何您在该过滤器之前使用LowerCaseFilter。