位置:首頁 > Java技術 > Lucene教學 > Lucene IndexWriter類

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