到分组统计估计大家都不会陌生,就是数据库的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"));}}}
}

3、实际的应用

相信使用过淘宝搜索功能的人都会注意到一个细小却又很重要的功能–“合并卖家”,如果使用solr就可以采用分组功能来实现。淘宝截图:

solr4.5分组查询、统计功能介绍相关推荐

  1. 易查分应用大全:查询统计功能使用说明

    Q:什么是查询统计功能? A:利用"查询统计"功能,可以快速查看用户查询次数.设置用户查询状态锁定情况.一键解除所有已锁定用户的查询状态.导出查询统计记录.下载签名: 使用方法 登 ...

  2. sqlalchemy case when分组查询统计

    1.需求 根据过滤条件将设备按升级状态分组,统计总数和各个状态的数量. 2.原始数据 3.原生sql语句 select count(*) as "total",sum(case w ...

  3. MySQL分组查询统计每个选项的数量

    帮客户做个问卷调查,最后需要统计每道问题的每个选项的数量.思路是先按问题分组,然后使用case语句区分每个选项,然后做统计. SQL语句如下: SELECTexamQuestionId,SUM(CAS ...

  4. goland gorm分组查询统计_golang gorm 计算字段和获取sum()值的实现

    计算表lb_ytt_user_money_log 中,字段money的和 代码如下: var total_money []int sqlstr := `select SUM(money) as tot ...

  5. python中分组频率统计功能_python频数统计value_counts和groupby方法

    python频数统计和groupby方法 频数统计 先用字典类型的数据创建一个DataFrame,test_data import pandas as pd test_data = pd.DataFr ...

  6. mysql分组查询统计求和

    说明 根据terminal_id中相同的值求和统计出cnt的值 select t.terminal_id,sum(t.cnt) from table_name t group by t.termina ...

  7. oracle多条件分组查询数量_ORACLE分组查询和统计等

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

  8. oracle数据库怎么分组查询,oracle数据库之分组查询

    本章内容和大家分享的是数据当中的分组查询.分组查询复杂一点的是建立在多张表的查询的基础之上,(我们在上一节课的学习中已经给大家分享了多表查询的使用技巧,大家可以自行访问:多表查询1  多表查询2)而在 ...

  9. 转贴:girdview分组,统计,排序的解决方案

    转自:http://hi.baidu.com/sneer_owen/blog/item/ec85e0df164d4651cdbf1a02.html 导言:        GridView 控件与 Da ...

最新文章

  1. 信道分类、信道复用技术、CSMA/CD 协议、PPP 协议、MAC 地址、局域网、以太网、交换机、虚拟局域网
  2. 第一届LCI workshop @ ICCV 2019, 欢迎投稿
  3. 【计算机组成原理】CPU:单周期数据通路(MIPS)
  4. 人大副教授从细节上教你如何快速进行研究生早期的科研之路
  5. 树莓派做下载机+Web服务器(Aria2下载+yaaw做UI+nginx)
  6. numpy.ones用法
  7. 生成时间序列每月月初月末
  8. 【导数术】12.极值点偏移与拐点偏移
  9. 阅读笔记20141202
  10. 什么是中性滤光片?有什么作用?
  11. 【GIS | WebGis的对比】Webgis地图框架的对比
  12. 金庸的小说人生(1)
  13. 1104. Path In Zigzag Labelled Binary Tree**
  14. matlab plot绘图
  15. 小程序毕设作品之微信校园浴室预约小程序毕业设计成品(6)开题答辩PPT
  16. donet datatable的代码输入
  17. [SAP] MRP MD01 无法运行MRP结果, MD02可运行问题查核及解决方法
  18. Java实现网络爬虫 案例代码1:获取天气预报信息
  19. Rockchip RK3588 kernel dts解析之Camera
  20. macOS如何修改默认打开方式

热门文章

  1. yarn资源调度(网络搜集)
  2. 《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
  3. 用C编写的诙谐幽默的关机程序。
  4. 解决mongodb ISODate相差8小时问题
  5. HTTP协议基础解读
  6. (转)I,P,B帧和PTS,DTS的关系
  7. PAT, PMT in MPEG2 Stream :筆記
  8. 绝对路径与相对路径的区别【2】--release和debug这两种情况下对本地文件操作不一致的问题...
  9. 简述CISCO防火墙透明模式
  10. 2008秋季-计算机软件基础-有序表合并 教材 P79, ex3