- Lucene 教程
- Lucene - 首頁
- Lucene - 概述
- Lucene - 環境搭建
- Lucene - 第一個應用程式
- Lucene - 索引類
- Lucene - 搜尋類
- Lucene - 索引過程
- Lucene - 索引操作
- Lucene - 搜尋操作
- Lucene - 查詢程式設計
- Lucene - 分析
- Lucene - 排序
- Lucene 有用資源
- Lucene - 快速指南
- Lucene - 有用資源
- Lucene - 討論
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。
類建構函式
下表顯示了 IndexWriter 的類建構函式:
| 序號 | 建構函式和說明 |
|---|---|
| 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。 |
類方法
| 序號 | 方法和說明 |
|---|---|
| 1 | void addDocument(Document doc) 將文件新增到此索引。 |
| 2 | void addDocument(Document doc, Analyzer analyzer) 使用提供的分析器而不是 getAnalyzer() 的值將文件新增到此索引。 |
| 3 | void addDocuments(Collection 以原子方式新增一組文件,這些文件具有按順序分配的文件 ID,這樣外部讀取器將看到所有文件或一個文件也不看。 |
| 4 | void addDocuments(Collection 以原子方式新增一組文件,使用提供的分析器進行分析,並按順序分配文件 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() 將所有掛起的更改(新增和刪除的文件、段合併、新增的索引等)提交到索引,並同步所有引用的索引檔案,以便讀取器看到更改,並且索引更新將在作業系統或機器崩潰或電源故障後仍然存在。 |
| 11 | void commit(Map<String,String> commitUserData) 提交所有更改到索引,指定 commitUserData Map (String -> String)。 |
| 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() 一個掛鉤,供擴充套件類在將掛起的新增和刪除的文件重新整理到 Directory 之後但在更改提交之前(寫入新的 segments_N 檔案)執行操作。 |
| 19 | protected void doBeforeFlush() 一個掛鉤,供擴充套件類在將掛起的新增和刪除的文件重新整理到 Directory 之前執行操作。 |
| 20 | protected void ensureOpen() |
| 21 | protected void ensureOpen(boolean includePendingClose) 在內部用於在關閉此 IndexWriter 時丟擲 AlreadyClosedException。 |
| 22 | void expungeDeletes() 已棄用。 |
| 23 | void expungeDeletes(boolean doWait) 已棄用。 |
| 24 | protected void flush(boolean triggerMerge, boolean applyAllDeletes) 將所有記憶體中緩衝的更新(新增和刪除)重新整理到 Directory。 |
| 25 | protected void flush(boolean triggerMerge, boolean flushDocStores, boolean flushDeletes) 注意:現在忽略 flushDocStores(硬編碼為 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() 返回此索引使用的分析器。 |
| 31 | IndexWriterConfig getConfig() 返回私有的 IndexWriterConfig,它是從傳遞給 IndexWriter(Directory, IndexWriterConfig) 的 IndexWriterConfig 克隆而來的。 |
| 32 | static PrintStream getDefaultInfoStream() 返回新例項化的 IndexWriter 的當前預設 infoStream。 |
| 33 | static long getDefaultWriteLockTimeout() 已棄用。請改用 IndexWriterConfig.getDefaultWriteLockTimeout()。 |
| 34 | Directory getDirectory() 返回此索引使用的 Directory。 |
| 35 | PrintStream getInfoStream() 返回此寫入器當前使用的 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(如果非空),前面帶有此寫入器的標識資訊和正在呼叫的執行緒。 |
| 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 Map (String -> String)。 |
| 69 | long ramSizeInBytes() 專家:返回當前快取在記憶體中的所有索引檔案的總大小。 |
| 70 | void rollback() 關閉 IndexWriter,而不提交自上次提交(或者自開啟以來,如果尚未呼叫 commit)以來發生的任何更改。 |
| 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() 如果啟用了詳細模式(即infoStream),則返回true。 |
| 98 | void waitForMerges() 等待任何當前未完成的合併完成。 |
繼承的方法
此類繼承自以下類:
- java.lang.Object