【发布时间】:2010-12-22 01:16:34
【问题描述】:
我有一个包含 12 亿个文档的索引 (Solr 1.4.1)。我想在包含大约 250 个唯一值的字段(int 类型)上启用分面导航。
我使用默认方法 (facet.method=fc) 获得 Java heap space java.lang.OutOfMemoryError,而枚举方法非常慢(但有效)。
对于给定数量的文档和唯一值,最佳方法是什么?
更新:
如果我理解正确的话:
使用fc方法分面的内存使用为:MaxDoc * 4bytes(字段类型为int,64bit JVM),即:1118950216 * 4bytes = 4.1GB(大约)
使用枚举方法进行分面的内存使用为:NumberOfUniqueValues * SizeOfBitset = 250 * (1118950216 / 8) = 32GB
这是正确的吗?
我将再次尝试 FC 方法(并为 solr 提供更多内存)。
谢谢!
【问题讨论】:
-
该字段属于哪种类型?在主干上还有另一种方法: facet.method=fcs (facet per segment)
-
@Karussell:你应该这样回答
-
Karussel:字段类型为整数。目前我在(优化的)索引中只有一个段(索引将是静态的)。我不确定 fcs 方法是否对我有帮助,但我会看看。
标签: solr out-of-memory faceted-search