2017-02-21 63 views
0

最近,我从solr 5.0升级到solr 6.4.1。我可以运行我的应用程序,但问题是索引大小与索尔6是太大了。在第5版中,索引大小约为15GB,在第6版中,对于相同的数据,索引大小为300GB!我无法理解是什么导致了Solr 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。以下是这种类型的定义。

<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管理界面中正常加载。当我使用solr管理界面的“分析”选项卡分析这些字段时,我可以看到停用词正在被滤除。但是,当我用这些停用词进行查询时,我确实得到了返回的结果,这让我认为可能停用词已被编入索引。

任何想法可以增加指数的大小在solr 6中这么多?

回答