什么是Facet.pivot

 Facet.pivot就是按照多个维度进行分组查询,是Facet的加强,在实际运用中经常用到,一个典型的例子就是商品目录树

NamedList解释:
NamedList,一个有序的name/value容器,NamedList不像Map,他具有以下特点:
      1、名字可以重复
      2、NamedList中的element保持这有序状态
      3、可以下标的形式访问Elements
      4、name和value都可以为null
package com.liucheng.solr;
import java.io.IOException;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.PivotField;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.util.NamedList;
public class FacetPivot { public static void facetPivotQuery(){
HttpSolrClient server = solrServer.getServer();
SolrQuery query = new SolrQuery();
String para = "*:*";
query.setFacet(true);
query.add("facet.pivot", "major_s,subMajor_s,brand_s");//多维度分组查询
query.setFacetLimit(100);//限制facet返回数量
query.setQuery(para);
try {
QueryResponse queryResponse = server.query(query,SolrRequest.METHOD.POST);
NamedList<List<PivotField>> namedList = queryResponse.getFacetPivot();
if(namedList != null){
List<PivotField> pivotList = null;
for(int i=0;i<namedList.size();i++){
pivotList = namedList.getVal(i);
if(pivotList != null){
for(PivotField pivot : pivotList){
System.out.println("一级:"+pivot.getValue()+" "+pivot.getCount());
List<PivotField> fieldList = pivot.getPivot();
if(fieldList!=null){
for(PivotField field : fieldList){
System.out.println("2级:"+field.getValue()+" "+field.getCount());
List<PivotField> fieldList1 = field.getPivot();
if(fieldList1!=null){
for(PivotField field1 : fieldList1){
System.out.println("3级:"+field1.getValue()+" "+field1.getCount());
}
}
}
}
}
}
}
}
} catch (SolrServerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
facetPivotQuery();
}
}
一级:无敌电器 1
2级:无敌显示器 1
3级:无敌海尔儿 1
一级:电器 1
2级:显示器 1
3级:海尔儿 1
一级:超级电器 1
2级:超级显示器 1

3级:超级海尔儿 1

8.solr学习速成之FacetPivot的更多相关文章

  1. 2.solr学习速成之安装

    1.下载解压solr-5.3.1.tgz [root@205 opt]# tar -zxf solr-5.3.1.tgz -C /opt/module/ 2.将solr-5.3.1/server/so ...

  2. 13.solr学习速成之IK分词器

    IKAnalyzer简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包. IKAnalyzer特性 a. 算法采用“正向迭代最细粒度切分算法”,支持细粒度和最大词长两 ...

  3. 12.solr学习速成之dataimport

    solr除了利用solrj建立索引外,还可以由列式数据库hbase触发器添加索引,自动全量或者增量索引关系数据库数据等. dataimport可以配置从任何关系数据库导入索引 1.将jar包拷贝到to ...

  4. 11.solr学习速成之MoreLikeThis

    Solr相似匹配    在网页搜索或电商产品搜索结果页面,很多时候会看到一个相似文档.相似产品或找相似的链接.Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeT ...

  5. 10.solr学习速成之高亮显示

    Solr高亮显示的三种实现 高亮显示在搜索中使用的比较多,比较常用的有三种使用方式,如果要对某field做高亮显示,必须对该field设置stored=true .          第一种是普通的高 ...

  6. 9.solr学习速成之group

    Group与Facet的区别  facet的查询结果主要是分组信息:有什么分组,每个分组包括多少记录:但是分组中有哪些数据是不可知道的,只有进一步搜索.        group则类似于关系数据库的g ...

  7. 7.solr学习速成之facet

    Facet 介绍   Facet 是 solr 的高级搜索功能之一 ,可以给用户提供更友好的搜索体验,在搜索关键字的同时 , 能够按照 Facet 的字段进行分组并统计.        比如你上淘宝, ...

  8. 6.solr学习速成之multicore查询

    查询关联多个core 再新建一个core 向每个core添加索引,修改 final static String SOLR_URL = "http://localhost:8080/solr/ ...

  9. 4.solr学习速成之bean

    以bean的形式提交索引,以bean的形式查询出来 package com.liucheng.solr; import java.io.Serializable; import org.apache. ...

随机推荐

  1. JDBC相关总结

    JDBC statement的相关总结 1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wr ...

  2. ROS中使用ABB Yumi IRB14000的一些资料汇总

    目前,ABB RobotStudio 已经更新到6.05.01了,可至官网下载. 使用ABB RobotStudio和ROS进行联合调试,请参考下文: http://blog.csdn.net/Zha ...

  3. iOS开发之最近开发遇到的问题总结

    1.Cannot create __weak reference in file using manual reference counting 解决办法: 点击工程-------->Build ...

  4. HashMap(HashSet)的实现

    0. HashMap(TreeMAP).HashSet.HashTable 的关系 HashMap 的底层则维护着 Node<K, V>[] table; 一个一维数组用于快速访问(只在初 ...

  5. 深入理解java虚拟机-第二章

    第2章 Java内存区域与内存溢出异常 运行数据区域 1.程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 2.J ...

  6. RabbitMQ学习系列三-C#代码接收处理消息

    RabbitMQ学习系列三:.net 环境下 C#代码订阅 RabbitMQ 消息并处理 http://www.80iter.com/blog/1438251320680361 http://www. ...

  7. String类的一些常规方法

    String类 String类常用方法: ①length(): length()       长度    方法** 对比:数组.length      属性** 一般情况下,一个数字,一个字母,一个汉 ...

  8. LibreOJ β Round #2 题解

    LibreOJ β Round #2 题解 模拟只会猜题意 题目: 给定一个长为 \(n\) 的序列,有 \(m\) 次询问,每次问所有长度大于 \(x\) 的区间的元素和的最大值. \(1 \leq ...

  9. Maven依赖war开发,找不到war里头的class解决方案

    问题描述: 开发一个web系统,需要引用另一个excel.war[在该系统里头是一个excel的导入导出小模块]进行项目 <dependency> <groupId>com.b ...

  10. asp select count(*) 用 open还是excute

    dSql1="select count(*) from test_hist where uid="&cid  'dRs1.open dSql1,tConn,1,1  'dS ...