不带计数的不同SOLR字段值

不带计数的不同SOLR字段值,solr,facet,Solr,Facet,我的问题与 不同的是,我需要最少的RAM密集型方法来收集关于不同值的信息。在这种情况下,我不关心实际计数,我只想知道该字段的可能值。 我一直在耗尽堆空间(3000多万个文档),必须有某种方法/参数以节省内存的方式来做到这一点我不知道RAM的使用情况,但您可能想试试,您会找到Solr的补丁。如果不同值的数量很高,您可能需要进行方面分页。使用facet.offset和facet.limit参数。使用StatComponenet检索特定字段的不同值列表: 参数stats.calcdistinct:

我的问题与
不同的是,我需要最少的RAM密集型方法来收集关于不同值的信息。在这种情况下,我不关心实际计数,我只想知道该字段的可能值。

我一直在耗尽堆空间(3000多万个文档),必须有某种方法/参数以节省内存的方式来做到这一点

我不知道RAM的使用情况,但您可能想试试,您会找到Solr的补丁。

如果不同值的数量很高,您可能需要进行方面分页。使用facet.offset和facet.limit参数。

使用StatComponenet检索特定字段的不同值列表:

参数
stats.calcdistinct

如果为true,将计算不同的值,并在响应中作为“countDistinct”和“distinctValues”返回。对于某些字段,此计算可能很昂贵,因此默认情况下为false。如果只希望为特定字段返回不同的值,还可以指定f..stats.calcdistinct,替换为字段名,以将不同的值计算限制为所需字段

要降低负载,请尽可能少地检索它,并缓存结果,仅在数据发生更改时再次检索

如果您的索引通常比较慢,您可能需要查看缓存配置和/或为SOLR提供更多RAM(如果您有办法的话)

(由我)在这里最初回答:


您使用过facet.method参数吗?没有,但是由于solr 1.4中的新默认值是“fc”,我真的不知道应该放什么,而另一个是“enum”,但“fc”应该使用更少的内存。看看什么是“高”?顶部字段可能有100个可能的值。默认值为100,因此通常不将其视为“高”。但是试着使用facet.limit=10,看看它是如何运行的。这似乎只与结果集相关。我不让solr返回任何行。我只对v3.x中没有的facet字段感兴趣。v3.x有答案吗?@ScottChu你是说Solr1.3.x吗?那真的很老了,我已经用了很长时间了。我认为即使在1.3版本中,你也可以使用术语组件来实现它,因为Luke(Solr管理员)在我没有记错的情况下也有这个信息。不!我是说Solr3.x。我们在产品上有一个旧的Solr 3.5。我试过你的答案,但没用!您是否尝试过链接wiki页面上记录的不同本地参数?它们还声明“
calcDistinct
-为了向后兼容,
calcDistinct=true
可以指定为
countDistinct=true distinctvalue=true
的别名”。我很有信心你能找到3.5版的解决方案。