ステミングやその他の改善を利用するために、一部のフィールドを から に変更しtext_general
ましたが、残念ながら、この変更により強調表示が壊れてしまいました。text_en
語幹のない単語 (つまり、"child" のように、語幹のあるバージョンが単語自体と同じ単語) のみを強調表示したいようです。
デフォルトの fieldType 定義を使用しています。
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="lang/stopwords_en.txt"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
そしてhl.fl=title&hl=true
、私のクエリで強調表示を有効にします。それが重要な場合、これはファセット検索でもあります。
この場合、前述したように、"child" のような語幹のない単語のみが強調表示されます。定義でインデックス アナライザーからステミング フィルターを削除すると (クエリ アナライザーは効果がないように見えます)、text_en
ストップワードを除くすべての一致した単語が強調表示されます。さらに、text_en
を使用するように変更するとEnglishMinimalStemFilterFactory
、より多くの単語が強調表示されます。これは、Porter のステマーではなく Porter のステマーによってステミングされているためだと思われます。そのような言葉の例は「strides」です。
誰が何が起こっているのか知っていますか?