Lucene IndexWriter類


此類充當創造/在索引過程中更新指標的核心組成部分。

類宣告

以下是 org.apache.lucene.index.IndexWriter 類的宣告:

public class IndexWriter
   extends Object
      implements Closeable, TwoPhaseCommit

欄位

以下是 org.apache.lucene.index.IndexWriter 類的欄位:

  • static int DEFAULT_MAX_BUFFERED_DELETE_TERMS -- 棄用,使用 IndexWriterConfig.DEFAULT_MAX_BUFFERED_DELETE_TERMS 代替.

  • static int DEFAULT_MAX_BUFFERED_DOCS -- 棄用,使用 IndexWriterConfig.DEFAULT_MAX_BUFFERED_DOCS 代替.

  • static int DEFAULT_MAX_FIELD_LENGTH -- 棄用. 請檢視 IndexWriterConfig.

  • static double DEFAULT_RAM_BUFFER_SIZE_MB -- 棄用. 使用 IndexWriterConfig.DEFAULT_RAM_BUFFER_SIZE_MB 代替

  • static int DEFAULT_TERM_INDEX_INTERVAL -- 棄用. 使用 IndexWriterConfig.DEFAULT_TERM_INDEX_INTERVAL 代替.

  • static int DISABLE_AUTO_FLUSH -- 棄用. 使用 IndexWriterConfig.DISABLE_AUTO_FLUSH 代替.

  • static int MAX_TERM_LENGTH 

  • static String WRITE_LOCK_NAME -- 在索引寫入鎖的名稱。

  • static long WRITE_LOCK_TIMEOUT -- 已棄用,使用 IndexWriterConfig.WRITE_LOCK_TIMEOUT 代替.

類別建構函式

S.N. 建構函式和說明
1 IndexWriter(Directory d, Analyzer a, boolean create, IndexDeletionPolicy deletionPolicy, IndexWriter.MaxFieldLength mfl)
棄用,使用 IndexWriter(Directory, IndexWriterConfig) 代替.
2 IndexWriter(Directory d, Analyzer a, boolean create, IndexWriter.MaxFieldLength mfl)
棄用,使用 IndexWriter(Directory, IndexWriterConfig) 代替.
3 IndexWriter(Directory d, Analyzer a, IndexDeletionPolicy deletionPolicy, IndexWriter.MaxFieldLength mfl)
棄用,使用 IndexWriter(Directory, IndexWriterConfig) 代替.
4 IndexWriter(Directory d, Analyzer a, IndexDeletionPolicy deletionPolicy, IndexWriter.MaxFieldLength mfl, IndexCommit commit)
棄用,使用 IndexWriter(Directory, IndexWriterConfig) 代替.
5 IndexWriter(Directory d, Analyzer a, IndexWriter.MaxFieldLength mfl)
棄用,使用 IndexWriter(Directory, IndexWriterConfig) 代替.
6 IndexWriter(Directory d, IndexWriterConfig conf)
每個構造由 conf 中給出的設定一個新的IndexWriter。

類方法

S.N. 方法 & 描述
1 void addDocument(Document doc) 
此索引增加了一個檔案
2 void addDocument(Document doc, Analyzer analyzer)
增加了一個檔案,這個索引使用所提供的analyzer,而不是getAnalyzer()的值
3 void addDocuments(Collection<Document> docs)
原子增加了使用順序分配的文件ID,以使得外部讀取器將顯示所有的檔案或無檔案的塊。
4 void addDocuments(Collection<Document> docs, Analyzer analyzer)
原子增加了檔案塊,分析使用提供的分析,使用順序分配檔案的ID,這樣外部的讀取器會看到全或無的檔案。
5 void addIndexes(Directory... dirs)
從索引陣列將所有片段新增到這個索引。
6 void addIndexes(IndexReader... readers)
合併所提供的索引到這個索引。
7 void addIndexesNoOptimize(Directory... dirs)
棄用. 使用 addIndexes(Directory...) 代替
8 void close()
提交所有更改索引並關閉所有相關檔案。
9 void close(boolean waitForMerges)
關閉索引有或沒有等待目前正在執行的合併來完成。
10 void commit()
提交所有掛起的更改(新增和刪除檔案,段合併,新增索引等),以索引,並同步所有參照索引檔案,這樣,讀取器將會看到的變化和索引的更新將生存的OS或機器崩潰或功率損耗。
11 void commit(Map<String,String> commitUserData)
提交所有更改索引,指定commitUserData對映(字串 - >字串)。
12 void deleteAll()
刪除索引中的所有檔案。
13 void deleteDocuments(Query... queries)
刪除檔案匹配提供的任何查詢。
14 void deleteDocuments(Query query)
刪除檔案匹配提供的查詢。
15 void deleteDocuments(Term... terms)
刪除包含任何條款的檔案(多個)。
16 void deleteDocuments(Term term)
刪除包含長期的檔案(多個)。
17 void deleteUnusedFiles()
刪除任何不再使用的索引檔案。
18 protected void doAfterFlush()
勾點擴充套件類懸而未決新增和刪除檔案後執行操作已經重新整理到目錄,但提交了更改之前(新segments_N檔案寫入)。
19 protected void doBeforeFlush()
勾點擴充套件類懸而未決新增和刪除檔案前執行操作重新整理到目錄。
20 protected void ensureOpen() 
21 protected void ensureOpen(boolean includePendingClose)
內部使用丟擲AlreadyClosedException,如果IndexWriter已經關閉。
22 void expungeDeletes()
不推薦使用
23 void expungeDeletes(boolean doWait)
不推薦使用
24 protected void flush(boolean triggerMerge, boolean applyAllDeletes)
重新整理都在記憶體中緩衝更新(新增和刪除)目錄
25 protected void flush(boolean triggerMerge, boolean flushDocStores, boolean flushDeletes)
註:flushDocStores現在忽略(hardwired為true);這種方法在這裡向後相容性
26 void forceMerge(int maxNumSegments)
強制合併的政策合併段,直到有<= maxNumSegments。
27 void forceMerge(int maxNumSegments, boolean doWait)
就像forceMerge(int), 除非指定呼叫是否應該阻止,直到所有的合併結束。
28 void forceMergeDeletes()
強制已刪除文件中的所有段合併。
29 void forceMergeDeletes(boolean doWait)
就像forceMergeDeletes(),除非可以指定呼叫是否應該阻塞,直到操作完成。
30 Analyzer getAnalyzer()
返回此索引的 analyzer。
31 IndexWriterConfig getConfig()
返回private IndexWriterConfig,從IndexWriterConfig克隆傳遞給 IndexWriter(Directory, IndexWriterConfig).
32 static PrintStream getDefaultInfoStream()
返回當前的預設infoStream 剛剛被範例化IndexWriters。
33 static long getDefaultWriteLockTimeout()
不推薦使用。使用IndexWriterConfig.getDefaultWriteLockTimeout()代替
34 Directory getDirectory()
返回此索引目錄。
35 PrintStream getInfoStream()
通過此 writer 返回當前 infoStream 使用
36 int getMaxBufferedDeleteTerms()
不推薦使用。使用IndexWriterConfig.getMaxBufferedDeleteTerms()代替
37 int getMaxBufferedDocs()
不推薦使用。使用IndexWriterConfig.getMaxBufferedDocs()代替
38 int getMaxFieldLength()
不推薦使用。使用LimitTokenCountAnalyzer限制令牌的數量
39 int getMaxMergeDocs()
不推薦使用。使用LogMergePolicy.getMaxMergeDocs()代替
40 IndexWriter.IndexReaderWarmer getMergedSegmentWarmer()
不推薦使用。使用IndexWriterConfig.getMergedSegmentWarmer()代替
41 int getMergeFactor()
不推薦使用。使用LogMergePolicy.getMergeFactor()代替
42 MergePolicy getMergePolicy()
不推薦使用。使用IndexWriterConfig.getMergePolicy()代替
43 MergeScheduler getMergeScheduler()
不推薦使用。使用 IndexWriterConfig.getMergeScheduler() 代替
44 Collection<SegmentInfo> getMergingSegments()
使用一個MergePolicy到空隙選擇合併為已被合併的段。
45 MergePolicy.OneMerge getNextMerge()
MergeScheduler呼叫此方法來檢索由MergePolicy要求在未來合併
46 PayloadProcessorProvider getPayloadProcessorProvider()
返回一個段期間使用PayloadProcessorProvider合併處理的有效載荷
47 double getRAMBufferSizeMB()
不推薦使用。使用IndexWriterConfig.getRAMBufferSizeMB()代替
48 IndexReader getReader()
不推薦使用。使用 IndexReader.open(IndexWriter,boolean) 代替.
49 IndexReader getReader(int termInfosIndexDivisor)
不推薦使用。使用 IndexReader.open(IndexWriter,boolean) 代替.此外,這種方法不能保證在讀取器(和它的子讀取器)將被開啟,並在termInfosIndexDivisor設定,因為其中的一些可能已經根據IndexWriterConfig.setReaderTermsIndexDivisor(int)開啟。應該通過IndexWriterConfig.setReaderTermsIndexDivisor(int)設定請求使用termInfosIndexDivisor和getReader()。
50 int getReaderTermsIndexDivisor()
不推薦使用。使用IndexWriterConfig.getReaderTermsIndexDivisor()代替
51 Similarity getSimilarity()
不推薦使用。使用 IndexWriterConfig.getSimilarity() 代替
52 int getTermIndexInterval()
不推薦使用。使用IndexWriterConfig.getTermIndexInterval()
53 boolean getUseCompoundFile()
不推薦使用。使用 LogMergePolicy.getUseCompoundFile()
54 long getWriteLockTimeout()
不推薦使用。使用 IndexWriterConfig.getWriteLockTimeout()
55 boolean hasDeletions() 
56 static boolean isLocked(Directory directory)
當且僅當索引在指定的目錄目前被鎖定,則返回true。
57 int maxDoc()
返回文件的此索引總數,包括文件尚未重新整理(仍然在RAM緩衝器),不計算缺失。
58 void maybeMerge()
詢問 mergePolicy 任何合併是否有需要現在,如果是,執行所需的合併,然後進行疊代(測試再次如果需要合併),直到沒有更多的合併被 mergePolicy 返回。
59 void merge(MergePolicy.OneMerge merge)
合併所指示的段,用單段替換它們在棧中
60 void message(String message)
列印一條訊息infoStream(如果非空),字首為此writer識別資訊,並且在呼叫它的執行緒
61 int numDeletedDocs(SegmentInfo info)
獲得刪除文件的數量匯集讀取器
62 int numDocs()
返回文件的此索引總數,包括文件尚未重新整理(仍然在RAM緩衝器),並包括缺失
63 int numRamDocs()
返回當前在RAM中緩衝的文件的數量
64 void optimize()
不推薦使用
65 void optimize(boolean doWait)
不推薦使用
66 void optimize(int maxNumSegments)
不推薦使用
67 void prepareCommit()
為提交做準備
68 void prepareCommit(Map<String,String> commitUserData)
為提交做準備,指定commitUserData對映(字串 - >字串)
69 long ramSizeInBytes()
目前返回在記憶體中快取的所有索引檔案的總大小
70 void rollback()
關閉IndexWriter而不提交自上次發生的任何改變提交(或因為它被開啟,如果提交沒有被呼叫)。
71 String segString() 
72 String segString(Iterable<SegmentInfo> infos) 
73 String segString(SegmentInfo info) 
74 static void setDefaultInfoStream(PrintStream infoStream)
如果非空,這將是使用一個新範例化IndexWriter預設infoStream。
75 static void setDefaultWriteLockTimeout(long writeLockTimeout)
不推薦使用。使用IndexWriterConfig.setDefaultWriteLockTimeout(long)代替
76 void setInfoStream(PrintStream infoStream)
如果非空,有關合併,刪除時MaxFieldLength到達的訊息資訊將被列印到這一點
77 void setMaxBufferedDeleteTerms(int maxBufferedDeleteTerms)
不推薦使用。使用 IndexWriterConfig.setMaxBufferedDeleteTerms(int) 代替.
78 void setMaxBufferedDocs(int maxBufferedDocs)
不推薦使用。使用 IndexWriterConfig.setMaxBufferedDocs(int) 代替.
79 void setMaxFieldLength(int maxFieldLength)
不推薦使用。使用 LimitTokenCountAnalyzer 代替. 需要注意的是行為略有改變- 分析器限制每個建立令牌流的令牌的數量,而此設定限制令牌索引的總數。這只是問題只有在索引多值的欄位。
80 void setMaxMergeDocs(int maxMergeDocs)
不推薦使用。使用 LogMergePolicy.setMaxMergeDocs(int) 代替.
81 void setMergedSegmentWarmer(IndexWriter.IndexReaderWarmer warmer)
不推薦使用。使用 IndexWriterConfig.setMergedSegmentWarmer( org.apache.lucene.index.IndexWriter.IndexReaderWarmer ) 代替.
82 void setMergeFactor(int mergeFactor)
不推薦使用。使用 LogMergePolicy.setMergeFactor(int) 代替.
83 void setMergePolicy(MergePolicy mp)
不推薦使用。使用 IndexWriterConfig.setMergePolicy(MergePolicy) 代替.
84 void setMergeScheduler(MergeScheduler mergeScheduler)
不推薦使用。使用 IndexWriterConfig.setMergeScheduler(MergeScheduler) 代替
85 void setPayloadProcessorProvider(PayloadProcessorProvider pcp)
設定合併有效負載時使用PayloadProcessorProvider。
86 void setRAMBufferSizeMB(double mb)
不推薦使用。使用 IndexWriterConfig.setRAMBufferSizeMB(double) 代替.
87 void setReaderTermsIndexDivisor(int divisor)
不推薦使用。使用 IndexWriterConfig.setReaderTermsIndexDivisor(int) 代替.
88 void setSimilarity(Similarity similarity)
不推薦使用。使用 IndexWriterConfig.setSimilarity(Similarity) 代替
89 void setTermIndexInterval(int interval)
不推薦使用。使用 IndexWriterConfig.setTermIndexInterval(int)
90 void setUseCompoundFile(boolean value)
不推薦使用。使用 LogMergePolicy.setUseCompoundFile(boolean).
91 void setWriteLockTimeout(long writeLockTimeout)
不推薦使用。使用IndexWriterConfig.setWriteLockTimeout(long)代替
92 static void unlock(Directory directory)
強行解鎖指數在指定的目錄
93 void updateDocument(Term term, Document doc)
首先刪除包含term檔案,然後新增新文件更新文件
94 void updateDocument(Term term, Document doc, Analyzer analyzer)
首先刪除包含 term 檔案,然後新增新文件更新文件
95 void updateDocuments(Term delTerm, Collection<Document> docs)
原子刪除檔案相匹配的設定delTerm,並增加了與順序分配的文件ID,以使得外部讀取器將顯示所有的檔案或無檔案的塊
96 void updateDocuments(Term delTerm, Collection<Document> docs, Analyzer analyzer)
原子刪除檔案匹配提供delTerm,並增加了檔案塊,分析,使用所提供的分析,有順序分配檔案ID,這樣外部的讀取器可以看到全或無的檔案
97 boolean verbose()
如果verbosing啟用返回true(即infoStream!
98 void waitForMerges()
等待任何當前未合併結束

方法繼承

這個類從以下類繼承的方法:

  • java.lang.Object