solr+solrJ facet.pivot 用法实例
来源:互联网 发布:怎么发送淘宝店铺链接 编辑:程序博客网 时间:2024/06/15 20:35
1、要实现的功能
2、索引中字段
3、solr搜索
http://****/collection1/select?q=shop_id:123&rows=1&wt=json&indent=true&facet=true&facet.pivot=p_type_name,type_name
4、solr结果
{ "responseHeader":{ "status":0, "QTime":0, "params":{ "facet":"true", "indent":"true", "q":"shop_id:123", "wt":"json", "facet.pivot":"p_type_name,type_name", "rows":"1"}}, "response":{"numFound":15,"start":0,"docs":[ { "add_description":" 天然美白精华液,天然水果提取的VC成分同时配合绿茶抗氧化成分,抑制黑色素生成,促进肌肤胶原蛋白的合成,预防斑点生成,亮白肤色同时收敛毛孔,让皮肤变得洁净亮白更加紧致透明,充满弹力\r\n \r\n ", "type_one":"00010", "brand_name":"It's skin 伊思", "sug":["It's skin 伊思", "精华", "itsskin 伊思10倍VC美白精华原液"], "id":"214", "share_number":0, "rank":0, "brand_thumb":"http://n.baai.com/baai/uploadfile/2015/06/26/201506261520194805.jpg", "total_num":100, "discuss_number":0, "sales":4, "p_type_name":"护肤", "name":"itsskin 伊思10倍VC美白精华原液", "name_autocomplete":"itsskin 伊思10倍VC美白精华原液", "type_three":"00011", "rebate":100, "save_number":1, "love_number":0, "shop_id":123, "brand_id":153, "code":"000100010000011", "page_view":128, "type_id":404, "type_parent":350, "price":10000, "price_c":"10000,USD", "type_name":"精华", "suggestion":"itsskin 伊思10倍VC美白精华原液", "p_id":214, "type_two":"0001000100", "thumb":"http://n.baai.com/baai/uploadfile/2015/07/18/20150718141410960.jpg", "_version_":1508018604938887168}] }, "facet_counts":{ "facet_queries":{}, "facet_fields":{}, "facet_dates":{}, "facet_ranges":{}, "facet_pivot":{ "p_type_name,type_name":[{ "field":"p_type_name", "value":"护肤", "count":13, "pivot":[{ "field":"type_name", "value":"乳液", "count":2}, { "field":"type_name", "value":"化妆水", "count":2}, { "field":"type_name", "value":"眼霜", "count":2}, { "field":"type_name", "value":"精华", "count":2}, { "field":"type_name", "value":"面膜", "count":2}, { "field":"type_name", "value":"面霜", "count":2}, { "field":"type_name", "value":"洁面", "count":1}]}, { "field":"p_type_name", "value":"彩妆", "count":2, "pivot":[{ "field":"type_name", "value":"BB霜", "count":2}]}]}}}
5、solrJ实现
public List<SearchType> getTypeTree(Integer type,String name) throws SolrServerException{SolrServer solrServer = SolrServerManger.getInstance(); SolrQuery sQuery = new SolrQuery(); List<SearchType> types=new ArrayList<SearchType>(); sQuery.setFacet(true); sQuery.add("facet.pivot", "p_type_name,type_name"); //根据这两维度来分组查询 switch (type) {case 1:sQuery.setQuery("name:"+name);break;case 2:sQuery.setQuery("shop_id:"+name);break;default:sQuery.setQuery("*:*");break;} QueryResponse response = solrServer.query(sQuery); NamedList<List<PivotField>> namedList = response.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){ SearchType typeTwo=new SearchType(); typeTwo.setName(pivot.getValue().toString()); List<PivotField> fieldList = pivot.getPivot(); if(fieldList != null){ List<SearchType> typeThrees=new ArrayList<SearchType>(); for(PivotField field:fieldList){ SearchType typeThree=new SearchType(); typeThree.setName(field.getValue().toString()); typeThrees.add(typeThree); } typeTwo.setSubTypes(typeThrees); types.add(typeTwo); } } } } } return types;}
6、solrj测试代码
public static void main(String [] args) throws SolrServerException{List<SearchType> types=getTypeTree(2, "123");for(SearchType t:types){System.err.println(t.getName()+"===========");for(SearchType tt:t.getSubTypes()){System.err.println(" ---"+tt.getName());}}}
7、测试结果
1 0
- solr+solrJ facet.pivot 用法实例
- solr facet查询及solrj 读取facet数据
- solr facet查询及solrj 读取facet数据
- Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介 - OnTheRoad_Lee
- solr 6.3 入门(五) facet.pivot的使用
- solr facet查询及solrj 读取facet数据(相当有用)
- solr中facet及facet.pivot理解(整合两篇文章保留参考)
- 转:solr中facet及facet.pivot理解(整合两篇文章保留参考)
- Solr中Facet用法和Group用法
- solr facet查询及solrj 读取facet数据【facet.prefix应用:搜索引擎拼写提示(也可用suggest);Solr 默认 requestHandler已包含 Facet 组件】
- solr facet
- solr facet
- Solr Facet
- solr facet
- [solr] - Facet
- [solr] - Facet
- [solr] - Facet
- Solr Facet.
- GCD理解(二)
- hdu杭电2120 Ice_cream's world I【并查集】
- Linux基本命令
- Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别
- Android动态改变GridView的值【安卓进化二十二】
- solr+solrJ facet.pivot 用法实例
- 取逗号之间的字符
- 使用AFNetWorking 上传图片
- iOS 获取设备唯一标识
- Android学习之路
- iOS网络编程之AFNetworking使用
- iOS开发——动画编程OC篇&(一)基本动画
- 欢迎使用CSDN-markdown编辑器
- Java基础学习总结(41)——JPA常用注解