Solr Grouping / Field Collapsing(分组查询)

来源:互联网 发布:大连开发区知润山房照 编辑:程序博客网 时间:2024/06/05 00:51

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

http://eksliang.iteye.com/

一、概述

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

 

二、语法简介

参考实例一

查询参数如下:

Java代码  收藏代码
  1. q=*:*  
  2. &group=true  
  3. &group.field=price  

 返回结果如下:

 

 Solr Grouping参数列表

参数参数含义group(true/false) 是否开启分组查询group.fieldgroup字段,通过在请求中加入group.field参数加以声明,如果需要对多个字段进行group by,那么该参数可以声明多次group.query可以对任意条件进行分组统计查询group.limit返回的数据的条目,默认为1 3group.offset偏移量,跟上面的group.limit一起可以达到分页的效果group.sort排序group.main(true/false)等于true,将只返回最后一个group.query查询的分组数据,一定是最后一个group.query,如果最后的条件是group.field,也没有效果,同时其他分组统计条件都会失去作用

       

三、参考实例

 参考实例一:group.field多个字段同时一起做分组统计查询演示,查询参数如下所示

Java代码  收藏代码
  1. q=*:*  
  2. &group=true  
  3. &group.field=price  
  4. &group.field=brand  
  5. &rows=2  

 返回结果如下所示:



 

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

Java代码  收藏代码
  1. q=*:*  
  2. &group=true  
  3. &group.query=price:[0 TO 3000]  
  4. &group.query=price:[2000 TO *]  
  5. &group.limit=2   

 返回结果如下所示:


 

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

Java代码  收藏代码
  1. q=*:*  
  2. &group=true  
  3. &group.query=price:[0 TO 3000]  
  4. &group.query=price:[2000 TO *]  
  5. &group.field=price  
  6. &group.main=true  

 返回结果如下所示:


 

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

Java代码  收藏代码
  1. q=*:*  
  2. &group=true  
  3. &group.field=price  
  4. &group.main=true  
  5. &rows=1  

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

Java代码  收藏代码
  1. <response>  
  2.  <lst name="responseHeader">  
  3.   <int name="status">0</int>  
  4.   <int name="QTime">2</int>  
  5.   <lst name="params">  
  6.   <str name="q">*:*</str>  
  7.   <str name="group.field">price</str>  
  8.   <str name="group.main">true</str>  
  9.   <str name="group">true</str>  
  10.   <str name="rows">1</str>  
  11.  </lst>  
  12.  </lst>  
  13.  <result name="response" numFound="9" start="0">  
  14.   <doc>  
  15.    <str name="id">a001</str>  
  16.    <str name="brand">联想</str>  
  17.    <float name="price">1100.0</float>  
  18.    <date name="birthday">2014-11-06T09:15:00Z</date>  
  19.    <str name="remark">联想A001</str>  
  20.    <long name="_version_">1487193657358417920</long>  
  21.   </doc>  
  22.  </result>  
  23. </response>  
1 0
原创粉丝点击