建立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。緩存