8.4Solr API使用(Result Grouping分组查询)

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

一、概述

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

二、语法简介

参考实例一

查询参数如下:

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多个字段同时一起做分组统计查询演示,查询参数如下所示

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>
时间: 2024-10-12 17:02:45

8.4Solr API使用(Result Grouping分组查询)的相关文章

Result Grouping / Field Collapsing-结果分组

WiKi:http://wiki.apache.org/solr/FieldCollapsing Introduction 字段折叠和结果分组是考虑相同solr功能的两种不同的方式. 字段折叠折叠一组具有相同字段值的结果到一个单个(或固定数量)的条目(实体)中.例如,大多数搜索引擎如谷歌聚合站点,所以只有一个或两个条目显示,然后点击这个站点连接,用户可以查阅来自这个站点的更多结果.字段折叠还具有抑制重复的文件的功能. 结果分组使用普通的字段值将文档分为多组.返回每组文档的前几个文档.一个常见的例

Hibernate5-投影查询,分组查询,Query的List和Iterate

1.创建项目,项目名称hibernatedemo9,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体Bean Forum,包名(com.mycompany.demo.bean),如图所示 4.实体Bean Forum的内容如下 package com.mycompany.demo.bean; public class Forum { private int fid; private String name; private int issh

连接查询和分组查询

一.分组查询:用于统计时经常使用分组查询 1.group by分组 01.例如查询每个年级的总人数 --一旦通过group by分组,那么我们只能获取组相关的信息,而不能获取组中成员的信息 --在select后只能跟聚合函数和group by后面的列,其他列不允许 1 select gradeid as 年级编号,COUNT(studentno) as 总人数 2 from student 3 group by gradeid 聚合函数: sum()--count()--max() min()-

mongodb 分组查询统计去掉重复的记录

mongodb版本号是,MongoDB shell version: 2.4.4 操作环境,shell窗口 ,如下所示: [mongo_user@mongodb_dbs ~]# mongo --port 30100 MongoDB shell version: 2.4.4 connecting to: 127.0.0.1:30000/test mongos> mongos> use pos switched to db pos mongos> 1,先统计分组记录数,以paymentOrd

【Hibernate】Hibernate的聚类查询、分组查询、排序与时间之差

在Hibernate中的HQL语句其实能够基本能够实现SQL语句所做的事情,正如jQuery至于javascript一样.虽然HQL语句是对类的查询,但是HQL在实行聚类查询.分组查询.排序与时间之差等查询,也无须把查询结果查询出来,再通过对List的处理才得到结果. 比如有一张如下的Testtable表: 要像<[Mysql]求出离最近相差X天的项,sql语句关于日期的比对>(点击打开链接)一样,查询date字段离现在具有30年的项有多少,SQL语句则这样写: select count(*)

表连接和分组查询

分组查询:分组查询就是按某一列分组,相同的列合并,得到结果可能他少于总记录 使用group by分组查询:按什么分(年级.姓氏.地址.年龄)年级 分组查询语法:Select * from <表名>Where 条件Group by 列名 Group by后的列名必须在*里面出现 Demo:Select GradeId From StudentGroup by GradeId --统计每学期男女同学的人数 该怎么办select GradeId as 编号,COUNT(Sex) as 总和 from

ORACLE分组查询和统计等

select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  where rw >= 5 1.rownum只能用<如果使用>加别名 2.子查询引用只能在查询出的结果中引用,比如子查询没有查出flow_id,外层不能用,另外外层不能引用内层的t 3.薪水前三名,内层查出薪水 order desc的虚表外层使用rownum<3 4.merge可以实现

SQL group by分组查询

本文导读:在实际SQL应用中,经常需要进行分组聚合,即将查询对象按一定条件分组,然后对每一个组进行聚合分析.创建分组是通过GROUP BY子句实现的.与WHERE子句不同,GROUP BY子句用于归纳信息类型,以汇总相关数据.GROUP BY的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理. 在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用

5 功能4:个人站点页面设计(ORM跨表与分组查询)

1.个人站点页面文章的查询 # 个人站点 http://www.cnblogs.com/wh1520577322/ http://www.cnblogs.com/liucong12345/ http://www.cnblogs.com/kin1492/ (1)用户未找到,404页面构建 url # 个人站点页面设计 re_path(r'^(?P<username>\w+)$', views.home_site, name='home_site'), view 404.html <!DOC