我的问题与这个问题非常相似
。不同之处在于,我需要最少的 RAM 密集型方式来收集有关不同值的信息。在这种情况下,我不关心实际计数,我只想知道该字段的可能值。
我经常用完堆空间(超过 3000 万个文档),必须有某种方式/参数以节省内存的方式来做到这一点
问问题
3722 次
3 回答
1
如果不同值的数量很高,您可能需要进行分面分页。使用 facet.offset 和 facet.limit 参数。
于 2010-07-14T13:23:18.740 回答
1
使用 StatsComponenet 检索特定字段的不同值列表: https ://cwiki.apache.org/confluence/display/solr/The+Stats+Component
参数stats.calcdistinct
:
如果为真,将计算不同的值并将其作为响应中的“countDistinct”和“distinctValues”返回。对于某些字段,此计算可能很昂贵,因此默认情况下为 false。如果您只想返回特定字段的不同值,您还可以指定 f..stats.calcdistinct,替换为您的字段名称,以将不同值计算限制为必填字段。
为了降低负载,请尽可能少地检索它并缓存结果,并且仅在数据更改时再次检索。
如果您的索引通常很慢,您可能需要查看缓存配置和/或给 SOLR 更多 RAM(如果您有办法)。
最初在这里回答(由我):
于 2014-11-03T12:42:11.507 回答
0
我不知道 RAM 的使用情况,但你可能想试试Field collapsing你会在这里找到 Solr 的补丁。
于 2010-07-14T12:40:19.450 回答