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 的类构造函数 -
    S.No. 构造函数和描述
    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.No. 方法和说明
    1
    void addDocument(Document doc)
    将文档添加到此索引。
    2
    void addDocument(Document doc, Analyzer analyzer)
    使用提供的分析器而不是 getAnalyzer() 的值将文档添加到此索引。
    3
    void addDocuments(Collection docs)
    以原子方式添加具有顺序分配的文档 ID 的文档块,这样外部阅读器将看到所有文档或不看到任何文档。
    4
    void addDocuments(Collection 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()
    将所有挂起的更改(添加和删除的文档、段合并、添加的索引等)提交到索引,并同步所有引用的索引文件,以便读者可以看到更改并且索引更新将在操作系统或机器崩溃或电力流失。
    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)
    如果此 IndexWriter 已关闭,则在内部用于抛出 AlreadyClosedException。
    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 现在被忽略(硬连线为 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()
    返回从传递给 IndexWriter(Directory, IndexWriterConfig) 的 IndexWriterConfig 克隆的私有 IndexWriterConfig。
    32
    static PrintStream getDefaultInfoStream()
    返回新实例化的 IndexWriter 的当前默认 infoStream。
    33
    static long getDefaultWriteLockTimeout()
    已弃用。请改用 IndexWriterConfig.getDefaultWriteLockTimeout()。
    34
    Directory getDirectory()
    返回此索引使用的目录。
    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()
    Expert: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()
    Expert:返回当前缓存在内存中的所有索引文件的总大小。
    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)
    通过首先删除包含术语的文档然后添加新文档来更新文档。
    94
    void updateDocument(Term term, Document doc, Analyzer analyzer)
    通过首先删除包含术语的文档然后添加新文档来更新文档。
    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