zoukankan      html  css  js  c++  java
  • solr4.5分组查询、统计功能介绍

    说到分组统计估计大家都不会陌生,就是数据库的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");//每组显示的个数,默认为1
    
    solrQuery.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就可以采用分组功能来实现。淘宝截图:

    1026234453

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

    本文永久链接: http://www.luoshengsha.com/319.html

  • 相关阅读:
    Elasticsearch简介及C#操作库
    开发商城
    小程序源码下载[demo整理自github]
    基于vue的可视化编辑器
    Ocelot中文文档-Qos服务质量(转)
    干货 | Elasticsearch、Kibana数据导出实战
    java常用的框架介绍
    操作系统基础知识2
    操作系统基础知识
    计算机网络基础知识2
  • 原文地址:https://www.cnblogs.com/Sonet-life/p/3721667.html
Copyright © 2011-2022 走看看