我在Lucene.Net中使用IndexWriter编写了许多文档。由于需要添加文档,所以我想知道在提交之前是否需要添加最佳文档数量。显然太多了,如果发生崩溃,你可能会失去内存中的所有内容,太频繁地在每个文件被添加后都会加速吞吐量。IndexWriter commit的Lucene .NET频率
1
A
回答
0
在达到非常高的数字之前,似乎并不存在性能问题。
Total time to commit [10] messages was [00:00:00.1093779]
Total time to commit [20] messages was [00:00:00.0156221]
Total time to commit [40] messages was [00:00:00]
Total time to commit [80] messages was [00:00:00.0312509]
Total time to commit [160] messages was [00:00:00.0156231]
Total time to commit [320] messages was [00:00:00.0156273]
Total time to commit [640] messages was [00:00:00.0312489]
Total time to commit [1280] messages was [00:00:00.0312509]
Total time to commit [2560] messages was [00:00:00.0500343]
0
这不是一个好的答案,看似简单的问题。除了“这取决于” ......
这取决于很多因素,如:
- 多大每个文档?如果它们很大(很多领域,大领域),那么当冲刷发生时,数字将会很小
- 什么是用例?你批量插入?如果是,那么它的值越高越好,IO越少,吞吐量越高。你是否需要立即承诺/坚持/坚持文档。那么你应该承诺每一次添加/更新。很多的IO,但是如果频率很低。然后是无限的光谱。
您最好设置“setRAMBufferSizeMB”而不是“setMaxBufferedDocs”。限制使用的内存量使基础架构需求更具可预测性。默认情况下,lucene按内存大小刷新(默认为16MB)。
还有另一种方法。将缓冲区大小设置为相当高的数字。但也有一个定时器定期提交。这可以在缓冲和可能“失去”更新的时段之间达到平衡。
是否存在与文档关联的递增“ID”?如果是这样,请确保它是一个领域。然后在启动时,您可以通过使用一个ID降序排序(如“通过ID desc选择顶级1顺序”)执行查询来查询最新的文档,并从那里重新启动更新。
如果没有ID,则添加数字日期字段并将DateTime.UtcNow.Ticks放入其中。这成为你的“更新游标”。
要牢记的另一件事是搜索延迟。摄取文档和搜索文档之间的时间。您可以遵循NRT模式并几乎完全保持最新状态。但是有成本。或者你可以决定一些延迟是可以接受的。在这种情况下,您可以更明智地决定何时刷新读取器/搜索器。
更多的概念性讨论。如果您可以提供关于各种关注点和参数的更多细节,我可以更具体一些。
相关问题
- 1. Lucene的IndexWriter类澄清
- 2. Lucene IndexWriter线程安全
- 3. Lucene - 打开一个封闭的IndexWriter
- 4. Lucene IndexWriter已经设置异常
- 5. Lucene:在索引时覆盖词频率
- 6. Lucene .Net优化过程
- 7. Lucene .NET更新数据
- 8. 的Lucene 4.0 - IndexWriter类错误:没有可用的
- 9. 为什么Lucene IndexWriter写过以前的文档?
- 10. TermFreqVector Lucene的.NET
- 11. c#中的信号计算频率.net
- 12. 使用Lucene创建一个术语频率的地图
- 13. 在SearchManager中使用IndexWriter
- 14. 如何使用lucene的shingleanalyzerwrapper + standardanalyzer + indexreader?
- 15. 创建lucene索引的方法
- 16. 分组Lucene搜索结果和计算频率由
- 17. 从Lucene索引中获取最高频率项
- 18. 查找所有至少具有给定查询词频率的Lucene文档
- 19. 概率和频率
- 20. .NET的Lucene搜索万事
- 21. Java Lucene与.Net的集成
- 22. 从Lucene的
- 23. 使用索引读取器代替IndexWriter/SnapshotDeletionPolicy的Lucene热索引备份
- 24. 列出按频率排列的对象,频率最高的频率
- 25. 在离线Solr/Lucene索引上多久调用一次commit?
- 26. Lucene.net IndexWriter锁获得
- 27. lucene中的精确度和召回率
- 28. 在将索引文件添加到索引后忘记关闭Lucene IndexWriter
- 29. Indexwriter类中的Forcemerge函数
- 30. Python中的频率