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

solr分组聚合

    博客分类:
  • solr
阅读更多

在大型电子商务网站中,在商品列表页,我们都可以看到商品按分类,品牌,价格的分类显示,如下图,这些我们可以使用solr中的facet功能实现。

  

 

facet的基本功能就是对搜索结果中的商品进行分类。

    1.facet用法

       facet.field:指定要分类的字段

       facet=on 或 facet=true表示功能开启

       facet.prefix 表示字段前缀

       facet.limit 表示返回的记录数

       facet.offict 表示从第几条开始,主要用于分页

       facet.query可以任意定义查询

       注:用于facet的字段的索引index一定要设为true

      2..facet.field

        这里我们查询产品名称中包含白色的商品有哪些分类,并且知道每个分类有几条记录

        把查询条件q=白色     facet.field=CategoryName,将得到下图结果

         可以看到分类T桖中有两个商品名称中包括白色

             分类裤子中有1个商品包括白色

         

       

       3. 按价格进行分段查询

        可以按价格区间来对搜索结果中的商品进行分段。我们先看下怎么进行分段,打开solrconfig.xml配置,找到如下节点

                      

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. <requestHandler class="solr.SearchHandler" name="/select">  
  2. <lst name="defaults">  
  3. <str name="echoParams">explicit</str>  
  4. <int name="rows">10</int>  
  5. <str name="df">text</str>  
  6.   
  7. str name="facet">on</str>  
  8. <str name="facet.range">Price</str>  
  9. <int name="f.Price.facet.range.start">0</int>  
  10. <int name="f.Price.facet.range.end">5000</int>  
  11. <int name="f.Price.facet.range.gap">1000</int>  
  12. </lst>  
  13. </requestHandler>  

        facet.range节点中表示按范围分段的字段为Price

        f.Price.facet.range.start表示起始值为0

       f.Price.facet.range.end表示最大值为 5000

       f.Price.facet.range.gap表示每次间隔1000进行分段 ,

      最后,我们看到的结果如下图

        0<=Price<1000 有1条记录

       1000<=Price<2000 有2条记录 ,查询的时候下限包括等于这种情况

      

    

           

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1.    

 

    facet还有其他参数用法,大家可以参照下官方文档。

 

转载自:http://blog.csdn.net/zx13525079024/article/details/26376697

分享到:
评论

相关推荐

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

    例如,它不支持JOIN操作,但提供了丰富的聚合函数和分组功能。 在实际应用中,你还需要考虑性能优化,如使用Solr的缓存机制、分页查询、查询过滤器(Filter Queries)等。同时,为了确保高可用性和可扩展性,可能...

    solr-5.3.2

    同时,5.3.2引入了更强大的聚合功能,支持统计计算、分组、排序等高级查询操作。 6. **更新处理链**:Solr的Update Request Processor链允许在索引文档之前或之后执行一系列操作,如字段值的转换、删除重复的文档等...

    solr in action

    - **聚合策略**:讲述如何对搜索结果进行分组,以及如何通过字段折叠来简化结果展示。 - **性能优化**:分享在大规模数据集上实现聚合功能时需要注意的性能问题。 #### 部署到生产环境 - **最佳实践**:分享将Solr...

    solr的增删改查和高亮以及分组

    分组查询允许用户按特定字段对结果进行分组,以便查看每个组内的聚合信息。Solr的`group`参数用于实现此功能: ```http http://localhost:8983/solr/select?q=*:*&group=true&group.field=category ``` 这个查询将...

    solr5.3.jar 相关十几个包

    6. **solr-analytics-5.3.0.jar**:这个组件提供了高级的统计和分析功能,如聚合查询、计算标准偏差、平均值等。它使得 Solr 不仅能进行基础的全文搜索,还能进行复杂的数据分析。 7. **solr-map-reduce-5.3.0.jar*...

    apache-solr-ref-guide-7.4(官方英文-文字版本)

    7. **分面**:解释了 Solr 的分面功能,帮助用户按照特定维度对结果进行分组和聚合。 8. **高亮显示**:介绍了如何在搜索结果中高亮显示与查询相关的部分。 9. **拼写检查**:提供了 Solr 的拼写检查功能,帮助...

    javaovo108

    3. 高级功能:包括高亮显示(突出显示查询词)、拼写检查(纠正用户输入错误)、搜索建议(自动补全)、分组统计(按类别聚合结果)、拼音检索(支持中文的音节搜索)等。 总之,Solr是一个强大的企业级搜索解决...

    GeoPath-Clustering:聚集路径非常相似的地理路径

    GeoPath聚类Memex路由集群项目正在尝试提供工具和技术,以便能够将某些Memex数据作为路由格式进行探索。 路线被定义为通过时间将对象...) 当前用例编号1尚未实现数据集和架构: 我们使用Apache Solr将广告数据点和细

    百家精华面试题.doc

    8. **SQL分组查询**:`GROUP BY`语句用于将数据按一个或多个字段进行分组,以便对每个组进行聚合操作(如计数、求和等)。在分组查询中,`SELECT`后面的字段要么是分组字段,要么是聚合函数。 9. **MySQL内联查询**...

    ElasticSearch.pdf

    - Elasticsearch支持丰富的聚合操作,包括计数、分组、排序等。 - 通过聚合查询可以对数据进行统计分析。 #### 六、进阶操作与优化 1. **SQL风格查询**:Elasticsearch提供了一种SQL风格的查询方式,使得开发...

    Lucene资料大全(包括Lucene_in_Action书等)

    5. **过滤与聚合**:Filter和Collector组件可以用于进一步筛选结果,或者进行分组、统计等聚合操作。 6. **更新与删除**:Lucene支持动态索引更新,可以添加、修改或删除文档,并实时反映在搜索结果中。 7. **多...

    玩转搜索框架ElasticSearch7.x实战1

    此外,Elasticsearch还支持聚合操作,可以轻松实现统计、排序和分组等功能,这是SQL中`INSERT`、`UPDATE`操作无法比拟的。 总的来说,Elasticsearch是一个强大的搜索框架,它在处理大规模数据的搜索、分析和实时性...

    luceneserver:在Apache Lucene之上的高性能“瘦包装” HTTP REST服务器

    该服务器在上“正在生产中”运行, 是开发人员用来查找Lucene,Solr和Tika jira的近乎实时更新的简单搜索实例。设计该设计与流行的基于Lucene的搜索服务器和不同之处在于,它更多地是围绕Lucene功能的最小且精简的...

    浅入深出ElasticSearch构建高性能搜索架构.docx

    5. **课时25:分组查询(aggregation)**:学习如何使用聚合查询功能,以获得更丰富的统计数据。 6. **课时30:elasticsearch实现拼音搜索**:探讨如何使用ElasticSearch实现拼音搜索功能,提高用户体验。 7. **课时36...

    All in Spark 实践

    - **多数据源关联聚合:** 实现基础业务与商业业务数据的有效关联。 - **中间表支持:** 支持灵活的数据导出。 - **表级权限控制:** 提供较好的表级权限控制机制。 - **满足业务需求:** 计算速度快,能够满足业务需求...

    java开源包1

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包11

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包2

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

    java开源包3

    Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模型。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信...

Global site tag (gtag.js) - Google Analytics