自从在谷歌上搜索 Lucene.Net 的用法后,我就开始了这个讨论,但我没有发现任何真正有用的东西。\n问题很简单:我在构建和更新 Lucene.Net 索引时遇到问题。特别是,即使我将 SetRAMBufferSizeMB 固定为 256、SetMergeFactor 固定为 100、SetMaxMergeDocs 固定为 100000,它的内存使用量仍在不断增长。此外,每次使用索引时,我都会小心地使用 Close() 和 Commit() 方法。
\n\n为了使 lucene.Net 适用于我的数据,我从本教程开始:http://www.lucenetutorial.com/lucene-in-5-minutes.html
\n\n对于 10^5 和 10^6 文档,似乎需要 1.8GB 内存。因此,如果实际 RAM 使用量是 7 倍以上,为什么还要设置 SetRAMBufferSizeMB 参数呢?有人真的知道如何限制内存使用吗?
\n\n此外,我观察到要处理 10^5 或 10^6 文档,有必要为 x64 平台编译 Lucene.Net。事实上,如果我为 x86 平台编译代码,索引崩溃会系统性地触及 1.2GB RAM。\n是否有人能够使用更少的 RAM 索引相同数量(甚至更多)的文档?在什么硬件和软件设置下?我的环境配置如下:\n- os := win7 32/64 位。\n- sw := .Net Framework 4.0 \n- hw := 具有 6GB RAM 的 12 核 Xeon 工作站。\n- Lucene.Net 版本:2.9.4g(当前稳定版)。\n- Lucene.Net目录类型:FSDirectory(索引写入磁盘)。
\n\n好的,我使用您关于重新使用文档/字段实例的建议测试了代码,但是代码在内存使用方面的执行完全相同。\n这里我针对我在索引过程中跟踪的一些参数发布了一些调试行1000000文件。