- 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