转载请出自出处: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>

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

  1. Result Grouping / Field Collapsing-结果分组

    WiKi:http://wiki.apache.org/solr/FieldCollapsing Introduction 字段折叠和结果分组是考虑相同solr功能的两种不同的方式. 字段折叠折叠一组 ...

  2. .Net程序员学用Oracle系列(21):分组查询(GROUP BY)

    1.GROUP BY 标准分组 1.1.GROUP BY 概述 1.2.WHERE 和 HAVING 的区别? 2.GROUP BY 扩展分组 2.1.ROLLUP 分组 2.2.CUBE 分组 2. ...

  3. day056-58 django多表增加和查询基于对象和基于双下划线的多表查询聚合 分组查询 自定义标签过滤器 外部调用django环境 事务和锁

    一.多表的创建 from django.db import models # Create your models here. class Author(models.Model): id = mod ...

  4. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

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

    查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...

  6. ORACLE分组查询和统计等

    select flow_id,rw from (select t.flow_id ,rownum as rw from apex_030200.wwv_flow_list_templates t)  ...

  7. 【mybatis】【mysql】mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

    mybatis查询mysql,group by分组查询报错:Expression #1 of SELECT list is not in GROUP BY clause and contains no ...

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

    1.个人站点页面文章的查询 # 个人站点 http://www.cnblogs.com/wh1520577322/ http://www.cnblogs.com/liucong12345/ http: ...

  9. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)

    ElasticSearch6.0  Java API  使用     排序,分组 ,创建索引,添加索引数据,打分等 如果此文章对你有帮助,请关注一下哦 1.1 搭建maven 工程  创建web工程 ...

随机推荐

  1. JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  2. AssemblyInfo.cs 详解

    前言 ? .net工程(包括Web和WinForm)的Properties文件夹下自动生成一个名为AssemblyInfo.cs的文件,一般情况下我们很少直接改动该文件.但我们实际上通过另一个形式操作 ...

  3. [css3] 看博客学习别人的旋转的星球

    定义一个div 太阳轨道sunline,边框显示出来,定义position为relative #sunline{ width: 500px; height: 500px; border:2px sol ...

  4. linux下安装oracle及weblogic

    安装weblogic 下载weblogic http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-17 ...

  5. vscode sync插件 在不同设备 同步的坑

    sync的好处不言而喻,在不同的设备都可以同步自己的插件和所有配置: 但是有时有总是会有坑, 现在把我遇到的坑记录下来,以防再次踩坑 VSCode 同步方案 VSCode 的插件 Setting Sy ...

  6. 实现卡片效果【DIV+CSS3】

    一.文字卡片效果 <html> <head> meta<charset="utf-8"> <title>文字卡片效果</tit ...

  7. 绝对良心提供百度网盘的jdk1.8源码下载包含sun包的

    但是openjdk网站有提供的: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/6bfaecb8ff77/src/share/classes/ 或者直 ...

  8. Vue入门(二)之数据绑定

    Vue官网: https://cn.vuejs.org/v2/guide/forms.html#基础用法 [入门系列] (一)  http://www.cnblogs.com/gdsblog/p/78 ...

  9. 绝版Node--Sequlize搭建服务(Node全栈之路 二)

    在Node全栈之路(一),也就是上篇文章中,我们讲到了sequlize的基本增删该查,这篇文章,我们在上篇文章的基础上继续探讨,讲一下关于sequlize创建的表之间的对应关系 参考资料:https: ...

  10. Python+Selenium笔记(十三):Page Object设计模式

    (一) 前言 简单的说就是分为2层,页面class 和测试class. 页面class:分为父类和子类(子类指具体的页面,每一个页面都创建一个类),父类中定义公有的属性和方法(操作). #对面向对象有 ...