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
相关产品推荐
相关产品推荐

