私はこの投稿で2つのことを理解しようとしています:
フィールド型定義にステマーが定義されているにもかかわらず、「built」が「build」にステミングされないのはなぜですか。ただし、「構築」は「構築」にステミングされています
Luke を使用してインデックスを調べ、どの単語が何に語幹変換されたかを確認する方法。Luke では、「build」が「build」に語幹を変えられているのを見ることができませんでした。「ビルド」を検索することで「ビルド」を含む行を正常に取得できるため、Lucene がそれを抑止していることはわかっています。
このリンクは非常に役に立ちましたが、私の質問には答えませんでした。
参考までに、ここに schema.xml の部分を示します。
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<!-- Case insensitive stop word removal.
add enablePositionIncrements=true in both the index and query
analyzers to leave a 'gap' for more accurate phrase queries.
-->
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<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="stopwords_en.txt"
enablePositionIncrements="true"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
<filter class="solr.EnglishMinimalStemFilterFactory"/>
-->
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
フィールド定義は
<field name="features" type="text_en" indexed="true" stored="true" multiValued="true"/>
データ セットは複数のドキュメントで構成されています。1 つのドキュメントは features フィールドに「Building」があり、1 つのドキュメントは同じフィールドに「built」があり、1 つのドキュメントは features フィールドに「Built-in」があります。
ファイル: hd.xml:
<field name="features">building NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor</field>
ファイル ipod_video.xml:
<field name="features">Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication</field>
ファイル sd500.xml:
<field name="features">built in flash, red-eye reduction</field>
Lukeall-3.3.0 を使用して、これは「features:build」で検索した結果です。(予想される 3 つのドキュメントではなく) 1 つが返されることに注意してください 。その 1 つのドキュメント内でさえ、ステミングは表示されません。
また、Luke で「features:built」を検索すると、次の 2 つのドキュメントが返されます。
それらのいずれかを選択すると、元の「ビルド」が表示されますが、「ビルド」は表示されません。