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
广告