Solr Grouping / Field Collapsing(分组查询)

本文深入探讨了Solr的分组查询功能,包括其基本原理、语法介绍以及通过多个实例展示了如何使用分组查询进行复杂的数据统计和筛选。详细解释了分组查询与Facet的区别,以及如何利用group参数实现多字段分组和自定义条件统计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Solr Grouping / Field Collapsing(分组查询)

转载请出自出处:http://eksliang.iteye.com/blog/2169458

http://eksliang.iteye.com/

一、概述

      分组统计查询不同于分组统计(Facet),facet只是简单统计记录数,并不能为每组数据返回实际的数据回来,solr提供的grouping查询能够解决这一问题,也就是说,他除了能分组外,还能把每组数据返回来。

 

二、语法简介

参考实例一

查询参数如下:

 q=*:*
 &group=true
 &group.field=price

 返回结果如下:

 

 Solr Grouping参数列表

参数参数含义
group(true/false) 是否开启分组查询
group.fieldgroup字段,通过在请求中加入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多个字段同时一起做分组统计查询演示,查询参数如下所示

q=*:*
&group=true
&group.field=price
&group.field=brand
&rows=2

 返回结果如下所示:



 

参考实例二:group.query自定义条件统计演示,请求参数如下所示

  q=*:*
  &group=true
  &group.query=price:[0 TO 3000]
  &group.query=price:[2000 TO *]
  &group.limit=2 

 返回结果如下所示:


 

参考实例三:group.main参数演示,请求参数如下所示

q=*:*
&group=true
&group.query=price:[0 TO 3000]
&group.query=price:[2000 TO *]
&group.field=price
&group.main=true

 返回结果如下所示:


 

参考实例四:group.main参数演示,请求参数如下所示

q=*:*
&group=true
&group.field=price
&group.main=true
&rows=1

 返回结果如下所示,可以看到其他group统计条件都会失去作用因为加了group.main=true

<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>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值