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(Collectiondocs)

以原子方式新增一組文件,這些文件具有按順序分配的文件 ID,這樣外部讀取器將看到所有文件或一個文件也不看。

4

void addDocuments(Collectiondocs, 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()

將所有掛起的更改(新增和刪除的文件、段合併、新增的索引等)提交到索引,並同步所有引用的索引檔案,以便讀取器看到更改,並且索引更新將在作業系統或機器崩潰或電源故障後仍然存在。

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
lucene_indexing_classes.htm
廣告
© . All rights reserved.