You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lucene.net 4.8.0-beta00016:如何打开现有索引添加文档而非覆盖?

Lucene.Net 索引追加问题解决

你的问题出在IndexWriterConfig的默认打开模式上:默认的OpenMode.Create会清空指定路径下的现有索引,重新创建新索引。要实现打开现有索引并添加文档,需要修改配置的打开模式。

修改方案

在创建IndexWriterConfig后,设置其OpenMode为以下两种之一:

  • OpenMode.OpenOrCreate:如果索引存在则打开,不存在则创建新索引(推荐,兼容首次创建和后续追加的场景)
  • OpenMode.Append:仅打开已存在的索引,若路径下无索引则抛出异常

修改后的代码

public void CreateIndex()
{
    var Dir = FSDirectory.Open(this.IndexPathName); // 属性IndexPathName存储索引所在路径
    var Analyzer = new StandardAnalyzer(AppLuceneVersion);
    var indexConfig = new IndexWriterConfig(AppLuceneVersion, Analyzer);
    // 设置打开模式为打开或创建(不会覆盖现有索引)
    indexConfig.OpenMode = OpenMode.OpenOrCreate;
    this.iIndexWriter = new IndexWriter(Dir, indexConfig); 
}

补充说明

  • 若你确定每次调用该方法时索引一定已存在,可以使用OpenMode.Append,它能避免误创建新索引
  • OpenMode.OpenOrCreate则适配所有场景,无需区分索引是否已存在

内容的提问来源于stack exchange,提问作者Dario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:56:00