【发布时间】:2012-11-15 07:40:26
【问题描述】:
我们有一个 Solr 核心,它有大约 250 个TrieIntFields(声明为dynamicField)。我们的 Solr 索引中有大约 1400 万个文档,许多文档在其中许多领域都具有一定的价值。我们需要在一段时间内对所有这 250 个字段进行排序。
我们面临的问题是底层的 lucene fieldCache 很快就会被填满。我们有一个 4 GB 的盒子,索引大小为 18 GB。在对这些动态字段中的 40 或 45 个进行排序后,内存消耗约为 90%,并且我们开始出现 OutOfMemory 错误。
目前,如果消耗的总内存超过 80%,我们每分钟都会运行一个 cron 作业来重新启动 tomcat。
根据我的阅读,我了解到限制可排序 Solr 字段上不同值的数量会降低 fieldCache 空间。这些可排序字段中的值可以是 0 到 33000 之间的任何整数,并且分布非常广泛。我们想到了一些扩展解决方案,但处理整个问题的最佳方法是什么?
更新:我们认为不是排序,如果我们确实提升它不会去 fieldCache。所以不要发出像
这样的查询select?q=name:alba&sort=relevance_11 desc
我们试过了
select?q={!boost relevance_11}name:alba
但不幸的是,boosting 也会填充字段缓存:(
【问题讨论】:
标签: solr lucene out-of-memory