2010-07-14 48 views
2

我的问题是非常相似的this question
区别,我需要最少的RAM密集方式来收集有关不同值的信息。在这种情况下,我不在乎实际的数量,我只是想知道该领域的可能值。
我经常用完堆空间(3000万文件)并且必须有某种方式/参数才能以内存节省的方式做到这一点不同的SOLR字段值没有计数

+0

你发挥与facet.method参数? – 2010-07-14 12:38:45

+0

nope,但由于“fc”是solr 1.4中的新默认值,所以我不知道应该放入什么 – 2010-07-14 14:41:36

+0

另一个是“枚举”,但“fc”应该使用较少的内存。请参阅http://wiki.apache.org/solr/SimpleFacetParameters#facet.method – 2010-07-14 16:22:08

回答

0

我不知道RAM的使用情况,但您可能想要请尝试Field collapsing您会发现Solr here的修补程序。

+0

这似乎只与结果集相关。我不让solr返回任何行。我只对方面领域感兴趣 – 2010-07-16 09:03:04

1

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

+0

什么是“高”?顶部字段可能有100个可能值 – 2010-07-14 14:39:50

+0

默认值为100,因此通常不会将其视为“高”。但尝试facet.limit = 10,看看它是如何发展。 – 2010-07-14 16:25:19

1

使用StatsComponenet检索不同值的列表某一个领域: https://cwiki.apache.org/confluence/display/solr/The+Stats+Component

参数stats.calcdistinct

如果为真,不同的值将被计算并返回为“countDistinct”和“ distinctValues“。对于某些字段,这种计算可能会很昂贵,所以默认情况下它是错误的。如果只想为特定字段返回不同的值,则还可以指定f..stats.calcdistinct,替换为字段名称,以将不同值计算限制为必填字段。

为了减少负载,尽可能少地检索它并缓存结果,并在数据发生变化时再次检索。

如果您的索引一般较慢,您可能需要查看缓存配置和/或给予SOLR更多RAM(如果您有办法)。

最初回答这里(由我):

https://stackoverflow.com/a/26714447/621690

+0

该选项在v3.x中不可用。对于v3.x有没有答案? – 2015-11-05 09:22:02

+0

@ScottChu你的意思是Solr 1.3.x?这真的很古老,我已经用这个版本很长一段时间了。我认为你可以使用术语组件来实现它,即使是1.3,因为如果我没有记错的话,Luke(Solr Admin)也有这个信息。 – Risadinha 2015-11-05 11:36:47

+0

不!我的意思是Solr 3.x.我们有一个旧的Solr 3.5产品。我试过你的答案,但它不起作用! – 2015-11-12 02:05:17