Lucene在每次添加到索引时创建一个新的.cfs文件

5vf7fwbs  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(190)

每次我提交将新文档添加到索引时,都会创建一个新的_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版-beta 00014

xzabzqsa

xzabzqsa1#

插入1000s的文档是没有问题的。在我的本地我的开发盒我可以插入大约14K的文档每秒。当然速度将在很大程度上取决于文件的大小和机器的速度。
Lucene很好地管理了这些片段,并且会定期合并它们,结果是片段更少,但片段更大.通过不调用FlushCommitMaybeRefreshBlocking,直到插入所需的文档集。(这些命令强制缓冲的文档被写入一个新的片段)但是,即使你在每次添加一个文档到索引后调用所有这些方法,Lucene仍然可以通过根据需要进行合并来很好地管理片段。它只会慢得多(可能像每秒20个文档)。

相关问题