建立IndexWriter实例时,经过IndexWriterConfig来设置其相关配置

建立IndexWriter实例时,经过IndexWriterConfig来设置其相关配置:
1.Analyzer:分析器

2.matchVersion:所用Lucene的版本

3.ramBufferSizeMB:随机内存 默认为16M.
用于控制buffer索引文档的内存上限,若是buffer的索引文档个数到达该上限就写入硬盘。固然,通常来讲越大索引速度越快

4.maxBufferedDocs:最大缓存文档数,该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬盘,生成一个新的索引segment文件。因此该参数也就是一个内存buffer,通常来讲越大索引速度越快,默认不启用.

5.maxBufferedDeleteTerms:最大缓存删除词条数,当数量达到时会刷新现有的索引段。默认不启用.

6.readerTermsIndexDivisor:索引分词抽样因子,若是值设为N,那么在读取索引的时候每N*termIndexInterval个分词中抽取一个做为样本到RAM中,N值越大所占用的内存越小。

7.mergedSegmentWarmer:默认值为NULL

8.termIndexInterval:索引分词间隔,值越大IndexReader耗费的内存越小。这个参数决定着查询每一个分词时所耗费的计算量。一般状况下它表明着在一个分词被定位到时,须要扫描的其余分词的最大值。默认值为32

9.delPolicy:索引删除策略,默认为KeepOnlyLastCommitDeletionPolicy,只保持最近一次的提交信息。

10.Commit:IndexCommit索引的变动若是要可见(如IndexDeletionPolicy,IndexReader中),必须提交COMMIT。每次提交都有一个惟一的segments_N文件与之关联。默认NULL

11.openMode:IndexWriter的打开模式,默认为CREATE_OR_APPEND,若是索引存在则打开进行扩充,不然新建。

12.Similarity:定义索引中分词的权重及打分状况。默认值为IndexSearcher.getDefaultSimilarity()

13.mergeScheduler:合并定时器,每一个线程执行一个merge操做,默认为ConcurrentMergeScheduler

14.writeLockTimeout:写锁超时时间 默认为1000毫秒

15.indexingChain:索引链,定义文档是如何被索引的,默认采DocumentsWriterPerThread.defaultIndexingChain。有关索引链后面会详细介绍。

16.Codec:编码或解码一个倒排索引段,用于生成一个新的段。

17.infoStream:用于调试信息的管理,默认为InfoStream.getDefault()不记录任何调试信息。

18.mergePolicy:索引段的合并策略。默认为TieredMergePolicy根据每一层容许的段数合并大小类似的段。

19.flushPolicy:索引段数据刷新策略。即RAM内存中的数据什么时候刷新到物理结构中。默认为FlushByRamOrCountsPolicy,即根据RAM的使用状况,maxBufferedDocs和maxBufferedDeleteTerms的值来制定刷新策略。

20.readerPooling:实例化IndexReader是很是昂贵的操做,且它是一个线程安全的,跟索引目录是一一对应的,最好的方式就是用一个Pool去维护这些IndexReader:保证一个文件目录只有一个实例,且不一样的IndexReader能够动态的组合。默认为false 不使用Pool.

21.indexerThreadPool:对documents创建索引的线程池,默认线程池中保持8个线程。

22.perThreadHardLimitMB:设置每一个段内存使用的上限,若是达到该上限就会对段进行强制刷新。默认值为1945M。
缓存

相关文章
相关标签/搜索