最近、solr 5.0 から solr 6.4.1 にアップグレードしました。アプリを正常に実行できますが、問題は、solr 6 のインデックス サイズが大きすぎることです。Solr 5 では、インデックス サイズは約 15 GB でしたが、solr 6 では、同じデータのインデックス サイズは 300 GB です。solr 6 のこのような大きな違いに何が寄与しているのか理解できません。
インデックスのサイズを大きくしているフィールドを特定できました。以下の通りです。
<dynamicField name="*_note" type="text_general" indexed="true" stored="true" multiValued="true" />
<field name="textproperty" type="text_general" indexed="true" stored="false" multiValued="true" />
<copyField source="*_note" dest="textproperty"/>
このフィールドをコメントアウトすると、インデックスのサイズが 10GB 未満に減少します。
このフィールドのタイプは text_general です。以下は、このタイプの定義です。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory" />
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="((?m)[a-z]+)'s" replacement="$1s" />
<filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.KStemFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="C:/Users/pratik/Desktop/solr-6.4.1_playground/solr-6.4.1/server/solr/collection1/conf/stopwords.txt" />
</analyzer>
<analyzer type="query">
<charFilter class="solr.HTMLStripCharFilterFactory" />
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="((?m)[a-z]+)'s" replacement="$1s" />
<filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
<filter class="solr.KStemFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="C:/Users/pratik/Desktop/solr-6.4.1_playground/solr-6.4.1/server/solr/collection1/conf/stopwords.txt" />
</analyzer>
</fieldType>
この問題をデバッグするために私が行ったいくつかのこと:
- フィールド タイプの定義が solr 5 で使用していたものと同じであり、バージョン 6 でも有効であることを確認しました。このフィールド タイプは、インデックス作成中に「ストップワード」のリストを無視すると見なします。solr 5 で使用していたのと同じストップワードのリストを提供しました。このファイルのパスが正しく、solr 管理 UI で正常にロードされていることを確認しました。solr 管理 UI の [分析] タブを使用してこれらのフィールドを分析すると、ストップワードが除外されていることがわかります。ただし、これらのストップワードのいくつかを使用してクエリを実行すると、結果が返されるため、おそらくストップワードがインデックス化されていると思われます。
solr 6でインデックスのサイズを大幅に増やすことができる理由は何ですか?