我有一个创建一个相当大的 Solr 3.6 索引的应用程序,大约。300GB 1B 文档,每天分为 10 个核心。索引效果很好,我使用循环算法在核心之间均匀分布文档。搜索对我来说也很有效,直到返回结果集大于 100K+ 文档。
那时,我返回一个 java 错误:OutOfMemoryError 或 SolrException:解析错误
我的搜索很简单,不使用通配符或排序或分面搜索,但它似乎在返回之前缓冲了整个结果集。我服务器上的物理内存是 256G,我运行的是 Solaris 10。我使用的是 32 位的默认 java,但也尝试了 32 位和 64 位的 java 7。
当我使用 64 位 java 时,我可以使用 –Xmx 选项将最大内存增加到足以返回 1M+ 文档,但它实际上只需要一个 Solr 进程所需的所有内存。
除了用数百个小索引重新设计我的应用程序之外,是否有人对如何在没有大量 RAM 的情况下从 Solr 获取大型搜索结果集有任何建议?