Solr的学习使用之(九)facet.pivot实战
2014-01-20 00:24
447 查看
facet.pivot自己的理解,就是按照多个维度进行分组查询,以下是自己的实战代码,按照newsType,property两个维度统计:
public List<ReportNewsTypeDTO> queryNewsType( ReportQuery reportQuery) { HttpSolrServer solrServer = SolrServer.getInstance().getServer(); SolrQuery sQuery = new SolrQuery(); List<ReportNewsTypeDTO> list = new ArrayList<ReportNewsTypeDTO>(); try { String para = this.initReportQueryPara(reportQuery, 0); sQuery.setFacet(true); sQuery.add("facet.pivot", "newsType,property");//根据这两维度来分组查询 sQuery.setQuery(para); QueryResponse response = solrServer.query(sQuery,SolrRequest.METHOD.POST); NamedList<List<PivotField>> namedList = response.getFacetPivot(); System.out.println(namedList);//底下为啥要这样判断,把这个值打印出来,你就明白了 if(namedList != null){ List<PivotField> pivotList = null; for(int i=0;i<namedList.size();i++){ pivotList = namedList.getVal(i); if(pivotList != null){ ReportNewsTypeDTO dto = null; for(PivotField pivot:pivotList){ dto = new ReportNewsTypeDTO(); dto.setNewsTypeId((Integer)pivot.getValue()); dto.setNewsTypeName(News.newsTypeMap.get((Integer)pivot.getValue())); int pos = 0; int neg = 0; List<PivotField> fieldList = pivot.getPivot(); if(fieldList != null){ for(PivotField field:fieldList){ int proValue = (Integer) field.getValue(); int count = field.getCount(); if(proValue == 1){ pos = count; }else{ neg = count; } } } dto.setPositiveCount(pos); dto.setNegativeCount(neg); list.add(dto); } } } } return list; } catch (SolrServerException e) { log.error("查询solr失败", e); e.printStackTrace(); } finally{ solrServer.shutdown(); solrServer = null; } return list; }
namedList打印结果: {newsType,property= [ newsType:8 [4260] [property:1 [3698] null, property:0 [562] null], newsType:1 [1507] [property:1 [1389] null, property:0 [118] null], newsType:2 [1054] [property:1 [909] null, property:0 [145] null], newsType:6 [715] [property:1 [581] null, property:0 [134] null], newsType:4 [675] [property:1 [466] null, property:0 [209] null], newsType:3 [486] [property:1 [397] null, property:0 [89] null], newsType:7 [458] [property:1 [395] null, property:0 [63] null], newsType:5 [289] [property:1 [263] null, property:0 [26] null], newsType:9 [143] [property:1 [138] null, property:0 [5] null] ] } 这下应该明白了。写到这里,突然想到一个,所有的分组查询统计,不管是一个维度两个维度都可以使用face.pivot来统计,不错的东东。 好了,Solr的学习使用系列差不多就这些了,其实也没啥东西,根本没有深入进去,如果深入的话,估计得花几个月时间,目前先了解下基本原理和基本使用方法,能够应付目前项目中的问题就行,当然,要真正掌握还需时间,冰冻三尺非一日之寒嘛,需要时日,有时间再来玩一玩。 在路上……
相关文章推荐
- Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介
- Solr的学习使用之(八)facet实战
- Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介 - OnTheRoad_Lee
- solr 6.3 入门(五) facet.pivot的使用
- 转:Solr学习总结-Facet(各种例子,包括facet.query的使用)
- Solr文档学习--Solrj的使用
- Solr学习总结(八)IK 中文分词的配置和使用
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
- Solr 学习(7) —- Solr Facet(实现搜索推荐词条)
- Windows系统环境下Solr之Java实战(三)使用solrJ管理索引库
- solr学习笔记(3)--使用solrj调用solr服务
- 8. Python脚本学习实战笔记八 使用XML-RPC进行文件共享
- 【Solr4.7.0学习笔记】系列之一:Facet分组查询
- 【HttpClient学习与实战】1.使用httpClient实现get与post信息传输
- 学习使用solr(一),solr和tomcat的配置及数据库中表的全量索引(上)
- solr中facet和group的使用
- swift学习第八天 项目实战-知乎日报之UIScollView和UIpageConrolView使用
- 搜索学习--Solr全文搜索服务器的基本使用(一)——SolrJ的使用
- 机器学习实战之使用 scikit-learn 库实现 knn
- Solr学习笔记五--solrj的使用(查询文档)