博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
solr4.5分组查询、统计功能介绍
阅读量:7094 次
发布时间:2019-06-28

本文共 1543 字,大约阅读时间需要 5 分钟。

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

示例场景:

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

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

1、创建一个SolrServer

SolrServer server = new HttpSolrServer("http://127.0.0.1:2001//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
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、实际的应用

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

 

本文出自 ,欢迎转载,转载时请注明出处及相应链接。

本文永久链接:

转载于:https://www.cnblogs.com/Sonet-life/p/3721667.html

你可能感兴趣的文章
权谋残卷
查看>>
[网页游戏开发]使用编辑器制作界面
查看>>
BZOJ 2725: [Violet 6]故乡的梦
查看>>
BZOJ 4530: [Bjoi2014]大融合
查看>>
15年大神分享心得
查看>>
[POJ3169] Layout
查看>>
JAVA虚拟机:对象的创建过程
查看>>
动态调用webservice
查看>>
form表单post请求保护 隐藏秘钥
查看>>
作用域插槽,用来属性插入
查看>>
201521123068《Java程序设计》第1周学习总结
查看>>
CSS3 弹性盒模型 box-flex
查看>>
玩玩hibernate
查看>>
python多版本以及各种包管理
查看>>
记录一些WPF常用样式方便以后复用(二)(Button、CheckBox、输入账号密码框)...
查看>>
【实用代码】选项卡切换——带标题底纹样式
查看>>
Gym - 101503I 利用到图论的构造
查看>>
Latex: article模板
查看>>
C do {...} while (0) 在宏定义中的作用
查看>>
数据结构——排序——8种常用排序算法稳定性分析
查看>>