我的问题与this question非常相似 差异,我需要最少的RAM密集方式来收集有关不同值的信息。在这种情况下,我不关心实际计数,我只想知道该字段的可能值 我经常耗尽堆空间(3000万个文档)并且必须有一些方法/参数以节省内存的方式执行此操作
答案 0 :(得分:1)
如果不同值的数量很高,您可能需要进行构面分页。使用facet.offset和facet.limit参数。
答案 1 :(得分:1)
使用StatsComponenet检索特定字段的不同值列表: https://cwiki.apache.org/confluence/display/solr/The+Stats+Component
参数stats.calcdistinct
:
如果为true,将计算不同的值并返回为" countDistinct"和" distinctValues"在回应中。对于某些字段,此计算可能很昂贵,因此默认情况下为false。如果您只想为特定字段返回不同的值,您还可以指定f..stats.calcdistinct,替换为您的字段名称,以将不同的值计算限制为必需的字段。
为了减少负载,尽可能少地检索它并缓存结果,并且只在数据发生变化时再次检索。
如果您的索引一般很慢,您可能需要查看缓存配置和/或为SOLR提供更多RAM(如果您有方法)。
最初在这里回答(由我):
答案 2 :(得分:0)
我不知道有关RAM的用法,但您可能想尝试Field collapsing您会找到Solr here的补丁。