【问题标题】:Lucene Creates a new .cfs file everytime I add to indexLucene 每次添加到索引时都会创建一个新的 .cfs 文件
【发布时间】:2021-08-06 16:29:09
【问题描述】:

每次我提交将新文档添加到索引中时,都会创建一个新的 _X.cfs 文件。

using (StandardAnalyzer analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48))
{
   using (IndexWriter writer = new IndexWriter(Directory)
   {

      Document doc = new Document();

      doc.Add(new TextField("Id", Id.ToString(), Lucene.Net.Documents.Field.Store.YES))
      doc.Add(new TextField("Symbol", Symbol, Lucene.Net.Documents.Field.Store.NO))
      doc.Add(new TextField("Channel",  Channel, Lucene.Net.Documents.Field.Store.NO))

      writer.AddDocument(doc);
      writer.Commmit();
  }
}
   

我有一个进程正在运行,每天(在不同的时间)将有 1000 份文档被索引。这样,我的目录中就会有 1000 个新的 .cfs 文件。

解决办法是什么?

我使用的是 Lucene.NET 版本 4.8.0-beta00014

【问题讨论】:

    标签: .net-core lucene lucene.net


    【解决方案1】:

    插入 1000 多个文档没有问题。在我的本地开发盒上,我每秒可以插入大约 14K 文档。当然速度在很大程度上取决于文件的大小和机器的速度。

    Lucene 很好地管理了这些段,并且会定期合并它们。结果将是更少的细分,但更大的细分。通过在插入所需的文档集之前不要调用FlushCommitMaybeRefreshBlocking,您可以使 Lucene 的工作更轻松并更快地建立索引。 (这些命令强制将缓冲文档写入新段中)。但是,即使每次将文档添加到索引后调用所有这些方法,Lucene 仍会通过根据需要进行合并来很好地管理段。它只会慢得多(可能每秒 20 个文档)。

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多