`
JLK
  • 浏览: 236113 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

solr facet 分组查询

    博客分类:
  • solr
阅读更多

最近再用apache的solr,觉得很好用
现在用它实现一个分组查询


public static Map<String, Integer> queryByGroup(String qStr,String groupField,String sortField,boolean asc,Integer pageSize,Integer pageNum){
  Map<String, Integer> rmap = new LinkedHashMap<String, Integer>();
  try {
   SolrServer server = getSolrServer();//getSolrServer() 方法就是返回一个CommonsHttpSolrServer
   SolrQuery query = new SolrQuery();
   if(qStr!=null&&qStr.length()>0)
    query.setQuery(qStr);
   else
    query.setQuery("*:*");//如果没有查询语句,必须这么写,否则会报异常
   query.setIncludeScore(false);//是否按每组数量高低排序
   query.setFacet(true);//是否分组查询
   query.setRows(0);//设置返回结果条数,如果你时分组查询,你就设置为0
   query.addFacetField(groupField);//增加分组字段
   query.setFacetSort(true);//分组是否排序
   query.setFacetLimit(pageSize);//限制每次返回结果数
   query.setSortField(sortField,asc ? SolrQuery.ORDER.asc :SolrQuery.ORDER.desc );//分组排序字段
   query.set(FacetParams.FACET_OFFSET,(pageNum-1)*pageSize);//当前结果起始位置
   QueryResponse rsp = server.query( query );   
   
   List<Count> countList = rsp.getFacetField(groupField).getValues();
   List<Count> returnList = new ArrayList<Count>();
   if(pageNum*pageSize<countList.size())
    returnList = countList.subList((pageNum-1)*pageSize,pageNum*pageSize);
   else
    returnList = countList.subList((pageNum-1)*pageSize,countList.size()-1);
   
   for (Count count : returnList) {
    if(count.getCount()>0)
     rmap.put(count.getName(), (int) count.getCount());
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return rmap;
 } 

分享到:
评论
1 楼 zhaiang 2014-07-04  
你确定能够实现分组并且自定义排序?貌似不行啊...

相关推荐

    solr facet 笔记

    Solr 是一个流行的开源搜索引擎,提供了丰富的功能,其中包括 Facet(分面)查询,它能够帮助用户在大量数据中进行高效、多维度的筛选。Facet 查询是数据分析和信息检索中的一个重要工具,允许用户查看数据的不同...

    solrj的facet查询总结

    Facet 查询是 Solr 的高级搜索功能之一,可以给用户提供更友好的搜索体验。在搜索关键字的同时,能够按照 Facet 的字段进行分组并统计。下面是对 SolrJ 的 Facet 查询的总结: 一、Facet 简介 Facet 是 Solr 的...

    Solr分组统计

    `EasyNet.Solr`可能是核心库,包含了与Solr服务器通信的代码和逻辑,而`ClientDemo`很可能是演示应用,用于展示如何使用`EasyNet.Solr`库来实现分组统计和facet功能。 总的来说,这个示例展示了如何利用`easysolr...

    基于Solr的多表join查询加速方法

    - **查询设计**:通过调整查询语句的结构,如使用“exists”查询或“join”查询,以适应Solr的查询机制,提升性能。 - **硬件和架构优化**:例如,增加Solr服务器的内存,使用SSD硬盘提升I/O速度,或者采用更高效的...

    快速上手数据挖掘之solr搜索引擎高级教程(Solr集群、KI分词)第15讲 solr之Facet 共7页.pptx

    第01讲 solr5简介第02讲 solr5之Schema第03讲 solr5之Solrconfig第04讲 solr5单机安装与配置第05讲 solrj基础(一)第06讲 solrj基础(二)第07讲 solrj之SolrBean第08讲 solrj语法详解第09讲 Solrj之Multicore查询第10...

    Solr 查询,索引

    Solr查询与索引是Apache Solr的核心功能,它是一个基于Lucene的开源搜索引擎服务器,提供了高效、可扩展的全文检索、命中高亮、 faceted search(分面搜索)、拼写检查、动态集群等特性。在本文中,我们将深入探讨...

    solr查询语法.pdf

    在Solr中,分面查询的结果字段为facet_counts,与responseHeader、response同级。 拼写检查功能允许用户对查询词进行校正,以提供更准确的搜索结果。这通过在solrconfig.xml中配置名为SpellCheckComponent的...

    Solr权威指南-上卷

    包括部署、配置、Solr Core、Solr DIH、全量导入、增量导入、索引、中文分词、查询组件、Solr Facet、高亮、查询建议,以及企业如何在真实的项目中使用Solr。不仅讲解了基本概念和使用方法,而且还分析了各组件的...

    solr实现电商自定义打分

    接下来,我们可能需要对Solr的查询解析器进行配置,以便支持自定义的函数查询。这通常涉及到修改`schema.xml`或`managed-schema`文件,定义新的查询字段类型和查询解析器。例如,可以创建一个新的查询解析器,专门为...

    java进阶Solr从基础到实战

    2. Solr查询 3. Facet查询 4. Group查询 5. 高亮查询 6. Suggest查询 7. SolrJ 章节三:Solr高级(上) 1. Solr Cloud 2. 函数查询 3. 地理位置查询 4. JSON Facet 章节四:Solr高级(下) 1. 深度分页 2. Solr Join...

    最新springboot solr查询

    Solr是一个开源搜索平台,用于构建搜索应用程序。Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,...

    java solr solrj 带账号密码增量查询添加索引

    主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询

    solr-6.2.0源码

    4. 高级搜索功能:Solr提供丰富的查询语法,如布尔逻辑、短语匹配、模糊匹配、字段限制等,以及自定义查询解析器和过滤器。 5. 自定义排序和评分:用户可以自定义文档排序规则和评分算法,以满足特定的业务需求。 6....

    solr创建索引并查询

    ### Solr创建索引并查询的关键知识点 #### 一、Solr简介 Apache Solr是一款开源的全文搜索引擎平台,基于Lucene实现。它提供了一套完整的搜索解决方案,并且支持多种高级特性,如高亮显示、分面搜索、地理位置搜索...

    Solr 搜索引擎 asp.net实现 示例详细操作步骤

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G Solr et操作提出查找请求,并得到XML...

    使用java实现solr-7.1.0的api和solr最新支持的sql查询

    在本篇文章中,我们将深入探讨如何使用Java API来与Solr 7.1.0进行交互,并了解Solr最新支持的SQL查询功能。 首先,让我们来讨论如何通过Java API与Solr 7.1.0进行通信。Solr提供了一个名为SolrJ的客户端库,它允许...

    针对Solr的SQL查询引擎

    Solr-SQL为Solr Cloud提供了SQL接口,开发人员可以通过JDBC协议在Solr Cloud上运行。同时,solr-sql是用于solr的Apache Calcite(见 http://calcite.apache.org)适配器。solr-sql 是用 Scala 编写的,它可以生成像 ...

    solr1.4教程

    1.2.3 查询:Solr提供丰富的查询API,包括标准查询语法、高亮显示、布尔运算、短语匹配等,可以实现复杂的搜索逻辑。 1.2.4 核心:Solr的核心(Core)是独立的搜索实例,每个核心可以有自己的索引和配置,便于管理...

    Apache Solr(solr-8.11.1.zip)

    8. **搜索性能优化**:Solr提供了多种优化手段,包括使用倒排索引、缓存策略、查询优化器等,以提高查询速度和整体性能。 9. **安全与认证**:Solr 8.x引入了内置的安全性框架,包括Zookeeper的ACL和Solr的Role-...

    Apache Solr(solr-8.11.1.tgz)

    - **性能优化**:Solr团队不断努力提升查询速度和索引效率,8.11.1版本可能包含了一些新的性能优化。 - **新功能**:可能引入了新的搜索特性,比如新的查询语法、更强大的分析器或者对最新技术标准的支持。 - **稳定...

Global site tag (gtag.js) - Google Analytics