1

我对什么与性能和最佳实践有更好的相关性有一些疑问。

我的系统会:

  1. 每个文档插入和更新,或
  2. 批量文档插入

正如我所发现的(在以前的系统中)#2 是直截了当的:

  • 批量删除旧文档并添加新文档,最多 10k 文档,每个文档不超过 20 个字段
  • 犯罪
  • 优化

但是#1仍然让我感到困惑,因为一些客户会一一添加文档。

每次插入和更新时提交和优化的惩罚是什么?或者我可以忽略它,因为它每天只发生 20 次?

Java 版本是 3.5,.net 版本是 3.03

我刚看到一篇博文,想知道社区有什么要说的。

4

1 回答 1

3

我认为根本不需要 .Optimize() 。Lucene 将自动处理段合并,您可以提供自己的逻辑来更改合并的计算方式。当 10% 的文档被标记为删除时,您可以编写一些合并已删除文档的内容。Lucene 的功能不需要合并每个已删除的文档。

当然,你最终会得到更多的段文件,它们会消耗文件描述符,但是你有没有遇到过打开太多文件的问题?我尝试用谷歌搜索 Windows 服务器安装上打开文件的最大数量,但答案从几千到受可用内存的限制不等。

于 2013-08-29T08:08:21.090 回答