我们有一个要求,我们需要按特定字段对记录进行分组并获取相应数字字段的总和
e.x。从userid选择userid,来自user_action group的sum(click_count);
我们正在尝试使用apache solr执行此操作,并发现有两种方法可以执行此操作:
使用字段折叠功能(http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/)但发现了2个问题: 1.1。这不是发布的一部分,可以作为补丁使用,因此我们不确定是否可以在生产中使用它。 1.2。我们不会得到这笔钱,但个人数量很多,我们需要在客户端加以总结。
使用统计数据组件和分面搜索(http://wiki.apache.org/solr/StatsComponent)。这符合我们的要求,但对于非常大的数据集来说还不够快。
我只是想知道是否有人知道有任何其他方法来实现这一目标。 感谢任何帮助。
谢谢,
Terance。
答案 0 :(得分:5)
为什么不使用StatsComponent? - 可从Solr 1.4上获得。
$ curl 'http://search/select?q=*&rows=0&stats=on&stats.field=click_count' |
tidy -xml -indent -quiet -wrap 2000000
<?xml version="1.0" encoding="utf-8"?>
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">17</int>
<lst name="params">
<str name="q">*</str>
<str name="stats">on</str>
<arr name="stats.field">
<str>click_count</str>
</arr>
<str name="rows">0</str>
</lst>
</lst>
<result name="response" numFound="577" start="0" />
<lst name="stats">
<lst name="stats_fields">
<lst name="click_count">
<double name="min">1.0</double>
<double name="max">3487.0</double>
<double name="sum">47912.0</double>
<long name="count">577</long>
<long name="missing">0</long>
<double name="sumOfSquares">4.0208702E7</double>
<double name="mean">83.0363951473137</double>
<double name="stddev">250.79824725438448</double>
</lst>
</lst>
</lst>
</response>