0

ソーラー: 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

「etiket」にフォールバックする必要があります。ただし、「etik」にフォールバックします。フィールドを分析すると、SOLR は次のように返します。

etiketje
etiketje
etiketje
etiketje
etik

SOLR が「Etiketje」を次のように分析することを望みます。

etiketje
etiket

うまくいけば、ここの誰かが私を正しい方向に向けることができます.

4

1 に答える 1

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"/>

ignoreCase=trueとにかくそのフィルターの前に LowerCaseFilter を使用しているため、StemmerOverrideFilterは必要ありません。

于 2014-03-19T01:38:18.067 に答える