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