原文:http://blog.itpub.net/28624388/viewspace-766134/
創建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。