2017-02-21 6 views
0

最近、私はsolr 5.0からsolr 6.4.1にアップグレードしました。私はアプリをうまく走らせることができますが、問題はsolr 6のインデックスサイズが大きすぎることです。ソル5では、インデックスサイズは約15GBでしたが、ソル6では同じデータのインデックスサイズは300GBでした!私はソル6のこのような大きな違いに何が寄与しているのか理解できません。Solr動的フィールドがインデックスサイズを吹き飛ばします

私はインデックスのサイズを爆破しているフィールドを特定できました。それは以下の通りです。

<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です。以下に、このタイプの定義を示します。私は、フィールドの型定義は、私はSolrの5で使用したものと同じであり、それはバージョン6にもこの有効であることを保証している

  • <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> 
    
    私は、この問題をデバッグするためにやった

    いくつかのことをフィールドタイプは、索引作成中に無視される「ストップワード」のリストを考慮します。私はsolr5で使用していたストップワードのリストを提供しました。このファイルのパスが正しいことを確認し、solr admin UIに正しくロードされていることを確認しました。 solrの管理UIの[分析]タブを使用してこれらのフィールドを分析すると、ストップワードが除外されていることがわかります。しかし、これらのストップワードを使ってクエリを実行すると、ストップワードがインデックスに登録されている可能性があると思われる結果が返されます。

solr 6ではインデックスのサイズを大きくすることができますか?

答えて

0

同様の問題に直面している人向けです。私の問題は、インデックスサイズを不均衡に増加させたフィールドが、omitNormsのデフォルト値が真ではないフィールドタイプ( "text_general")を持っていたことでした。それを明示的にオンにして問題を解決しました。以下は、solrメーリングリストの私の関連する質問へのリンクです。

http://search-lucene.com/m/Solr/eHNlagIB7209f1w1?subj=Fwd+Solr+dynamic+field+blowing+up+the+index+size

関連する問題