原文网址:http://www.cnblogs.com/Sonet-life/p/3721667.html

说到分组统计估计大家都不会陌生,就是数据库的group by语句,但是当我们采用solr4.5全文检索时,数据库提供再好的sql语句都没有任何的意义了,那么在solr4.5中我们如何做到分组统计呢?其实很简单,下面我们来看看怎么做。

示例场景:

现在有个电子商务网站的产品搜索功能,不同的商家发布不同的产品,我们想通过关键词“手机”去查找不同商家下面有多少有关手机的产品。假设索引库的结构是产品id(id)、产品标题(title)、产品价格(price)、商家id(companyId)。

以下示例采用slorj分组统计solr:

1、创建一个SolrServer

SolrServer server = new HttpSolrServer("http://127.0.0.1:2001/solr/product");

2、分组查询

SolrQuery solrQuery = new SolrQuery("title:手机");solrQuery.setParam("group", true);//是否分组solrQuery.setParam("group.field", "companyId");//分组的域(此处以公司id进行分组)//solrQuery.setParam("group.query", "price:[0 TO 100]");//还可以根据其他条件进行过滤,如价格在1到100之间solrQuery.setParam("group.limit", "10");//每组显示的个数,默认为1solrQuery.setParam("group.ngroups", true);//是否计算所得分组个数;注意:当每个分组显示数目大于1个时,不能用分组数量来计算总页码//solrQuery.setStart(0); //起始索引值//solrQuery.setRows(100);//显示几条数据QueryResponse resp = server.query(solrQuery);GroupResponse gresp = resp.getGroupResponse();//注意:此处不能再用resp.getResults()接收结果List<GroupCommand> commands = gresp.getValues();if(commands != null) {for(GroupCommand com : commands) {Sysout.out.println("总的分组个数:" + com.getNGroups().longValue());for(Group group : com.getValues()) {SolrDocumentList hits = group.getResult();for(SolrDocument doc : hits) {System.out.println("id: " + (String)doc.getFieldValue("id") + ", title: " +  (String)doc.getFieldValue("title") + ", price: " +  (Float)doc.getFieldValue("price"));}}}
}
//获取分组之后的键名和键值,同时放进一个map集合里
Map<String, Integer> info = new HashMap<String, Integer>();
GroupResponse groupResponse = resp.getGroupResponse();  //获取分组结果信息
if(groupResponse != null) {  List<GroupCommand> groupList = groupResponse.getValues();  for(GroupCommand groupCommand : groupList) {  List<Group> groups = groupCommand.getValues();  for(Group group : groups) {  info.put(group.getGroupValue(), (int)group.getResult().getNumFound());  }  }
}  

solr分组查询、统计功能详解相关推荐

  1. mysql 分组查询 语句_详解MySQL中的分组查询与连接查询语句

    分组查询 group bygroup by 属性名 [having 条件表达式][ with rollup] "属性名 "指按照该字段值进行分组:"having 条件表达 ...

  2. 采购管理软件最好的哪个?采购查询功能详解

    软件服务交付的速度和准确性是考量的一个重要标准,软件开发公司的后续服务也直接影响使用者的体验,那么选择一款采购管理软件呢?哪一个比较好呢?下面,给大家介绍一下一款采购管理软件,以及它完善的采购查询功能 ...

  3. 国际短信系统平台后台功能详解-移讯云短信软件

    国际短信系统平台后台功能详解-移讯云短信软件   后台登陆首页显示 ⦁    用户总量记录: 显示总使用户数量 ⦁    待审核账号数量记录: 等待审核的新用户账号数量 ⦁    待审核签名数量记录: ...

  4. mysql获取当天每小时统计_详解mysql 获取某个时间段每一天、每一个小时的统计数据...

    获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:1 ...

  5. wazuh agent功能详解

    wazhu之agent功能详解 一.日志数据收集 日志数据收集是从服务器或设备生成的记录中收集的实时过程.此组件可以通过文本文件或Windows事件日志接收日志.它还可以通过远程syslog直接接收日 ...

  6. 深入mysql慢查询设置的详解

    深入mysql慢查询设置的详解 在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间 比较 ...

  7. mysql通过集合查询_MySQL使用集合函数进行查询操作实例详解

    本文实例讲述了MySQL使用集合函数进行查询操作.分享给大家供大家参考,具体如下: COUNT函数 SELECT COUNT(*) AS cust_num from customers; SELECT ...

  8. MySQL的用户密码过期功能详解

    MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...

  9. 短信平台专业版软件客户端功能详解源码搭建|移讯云短信系统

    国际短信平台专业版软件客户端功能详解|移讯云短信系统 首页显示 剩余条数 充值总数 提交总数 成功数量 失败数量 未知数量 代发数量 签名数量 最新提交 平台公告 API接口文档 短信发送 发送短信选 ...

最新文章

  1. linux uefo引导 win_基于UEFI和GPT模式下U盘安装windows8.1和Linux双启动教程
  2. java 可控异常_java异常处理,重新认识java异常,java7异常处理的新特性!
  3. Linux笔记16.磁盘管理
  4. 水下机器人_相关知识点
  5. 计算机编程软文,全盲男孩自学编程,一句话打动无数网友…
  6. php 数组排序 按值,php – 按值排序数组
  7. .net remoting的事务传播以及wcf分布式事务
  8. Arcgis Javascript那些事儿(十二)——geometry service几何服务
  9. 罗列几个Android插件化开发框架
  10. android机顶盒root,[Android]机顶盒root脚本:SupersuSU获取完美Root权限万能方法,解决二进制更新问题 | 樱花庄...
  11. SECS/GEM 产品开发和介绍
  12. 数学分析教程(科大)——3.4笔记+习题
  13. 习题4-1 Xiangqi UVA - 1589
  14. 计算机作业SHOP,面向Job-shop车间最优作业切换的成组调度研究
  15. C++ Qt 实现小游戏2048
  16. 在中国移动(中国联通、中国电信)工作是一种怎样的体验?
  17. app公司制作app的方法和步骤
  18. Android脑图--Android动画
  19. Proteus与Keil联调 ARM STM32流水灯
  20. 118_杨辉三角与杨辉三角II

热门文章

  1. SQL(基础例题+SQLserver实现)
  2. 基于FPGA的ASK/FSK调制
  3. 计算机仿真技术应用报告,计算机仿真技术实验报告-实验二
  4. ubuntu安装输入法----小企鹅输入法
  5. 虚拟现实在教育领域的发展前景分析与展望
  6. EtherCAT-SOEM主站搭建-windows
  7. 【第二章】谭浩强C语言课后习题答案
  8. 炫龙笔记本安装Ubantu系统
  9. Diffusion Model原理详解及源码解析
  10. 论追热点,我不是针对谁,我是说在座的各位......