Lucene 基础教程

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/lucene-indexwriter.html

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