Solr Grouping / Field Collapsing(分组查询)
2015-12-06 14:59
489 查看
转载请出自出处:/article/4015563.html
http://eksliang.iteye.com/
分组统计查询不同于分组统计(Facet),facet只是简单统计记录数,并不能为每组数据返回实际的数据回来,solr提供的grouping查询能够解决这一问题,也就是说,他除了能分组外,还能把每组数据返回来。
参考实例一
查询参数如下:
Java代码
q=*:*
&group=true
&group.field=price
返回结果如下:
Solr Grouping参数列表
参考实例一:group.field多个字段同时一起做分组统计查询演示,查询参数如下所示
Java代码
q=*:*
&group=true
&group.field=price
&group.field=brand
&rows=2
返回结果如下所示:
参考实例二:group.query自定义条件统计演示,请求参数如下所示
Java代码
q=*:*
&group=true
&group.query=price:[0 TO 3000]
&group.query=price:[2000 TO *]
&group.limit=2
返回结果如下所示:
参考实例三:group.main参数演示,请求参数如下所示
Java代码
q=*:*
&group=true
&group.query=price:[0 TO 3000]
&group.query=price:[2000 TO *]
&group.field=price
&group.main=true
返回结果如下所示:
参考实例四:group.main参数演示,请求参数如下所示
Java代码
q=*:*
&group=true
&group.field=price
&group.main=true
&rows=1
返回结果如下所示,可以看到其他group统计条件都会失去作用因为加了group.main=true
Java代码
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2</int>
<lst name="params">
<str name="q">*:*</str>
<str name="group.field">price</str>
<str name="group.main">true</str>
<str name="group">true</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="9" start="0">
<doc>
<str name="id">a001</str>
<str name="brand">联想</str>
<float name="price">1100.0</float>
<date name="birthday">2014-11-06T09:15:00Z</date>
<str name="remark">联想A001</str>
<long name="_version_">1487193657358417920</long>
</doc>
</result>
</response>
http://eksliang.iteye.com/
一、概述
分组统计查询不同于分组统计(Facet),facet只是简单统计记录数,并不能为每组数据返回实际的数据回来,solr提供的grouping查询能够解决这一问题,也就是说,他除了能分组外,还能把每组数据返回来。
二、语法简介
参考实例一查询参数如下:
Java代码
q=*:*
&group=true
&group.field=price
返回结果如下:
Solr Grouping参数列表
参数 | 参数含义 |
group | (true/false) 是否开启分组查询 |
group.field | group字段,通过在请求中加入group.field参数加以声明,如果需要对多个字段进行group by,那么该参数可以声明多次 |
group.query | 可以对任意条件进行分组统计查询 |
group.limit | 返回的数据的条目,默认为1 3 |
group.offset | 偏移量,跟上面的group.limit一起可以达到分页的效果 |
group.sort | 排序 |
group.main | (true/false)等于true,将只返回最后一个group.query查询的分组数据,一定是最后一个group.query,如果最后的条件是group.field,也没有效果,同时其他分组统计条件都会失去作用 |
三、参考实例
参考实例一:group.field多个字段同时一起做分组统计查询演示,查询参数如下所示Java代码
q=*:*
&group=true
&group.field=price
&group.field=brand
&rows=2
返回结果如下所示:
参考实例二:group.query自定义条件统计演示,请求参数如下所示
Java代码
q=*:*
&group=true
&group.query=price:[0 TO 3000]
&group.query=price:[2000 TO *]
&group.limit=2
返回结果如下所示:
参考实例三:group.main参数演示,请求参数如下所示
Java代码
q=*:*
&group=true
&group.query=price:[0 TO 3000]
&group.query=price:[2000 TO *]
&group.field=price
&group.main=true
返回结果如下所示:
参考实例四:group.main参数演示,请求参数如下所示
Java代码
q=*:*
&group=true
&group.field=price
&group.main=true
&rows=1
返回结果如下所示,可以看到其他group统计条件都会失去作用因为加了group.main=true
Java代码
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2</int>
<lst name="params">
<str name="q">*:*</str>
<str name="group.field">price</str>
<str name="group.main">true</str>
<str name="group">true</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="9" start="0">
<doc>
<str name="id">a001</str>
<str name="brand">联想</str>
<float name="price">1100.0</float>
<date name="birthday">2014-11-06T09:15:00Z</date>
<str name="remark">联想A001</str>
<long name="_version_">1487193657358417920</long>
</doc>
</result>
</response>
相关文章推荐
- solrj入门及进阶,高级使用
- Intent PendingIntent
- 1008: [HNOI2008]越狱
- Android:自适应不同分辨率的字体大小
- android-app manifest(5) - API 23
- NYOJ 116 士兵杀敌二
- leetcode Invert Binary Tree python
- Installing OpenGrok and Tomcat 7 on Ubuntu 13.04 quickly
- 正则表达式
- HDU 3338 Kakuro Extension 网络流
- 磁盘格式化、挂载与卸载及分区表 fstab
- 判断两线段是否相交-考研真题
- MyBatis一对多双向关联以及collection的两种形式
- 流量公司的最大利润
- 安卓学习:(2)安卓控件TextView的使用
- Struts2 datetimepicker 不显示
- 设计模式——组合模式
- Elasticsearch学习地址
- 笔记本开机密码错误 输对正确密码却说密码错误
- EL表达式 (详解)