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

solr的分组和统计功能

 
阅读更多

http://localhost:8983/solr/select?q=*:*&stats=true&stats.field=price&stats.field=popularity&rows=0&indent=true

 
http://localhost:8983/solr/collection1/select?q=*%3A*&wt=xml&indent=true&group=true&group.field=popularity&group.ngroups=true
 
加limit参数限制每组返回的记录个数,加group.main=true返回每个分组的第一条记录信息(没有分组的详细信息)

一、Facet介绍

solr facet 是solr搜索的一大特色,facet不好翻译,有说是垂直搜索,有说是分片搜索,但都不是很好,还是懒得翻译了,就叫facet ,具体功能看下面的例子意会吧。

 

比如你上淘宝,输入“笔记本”进行搜索,就会出现品牌分类,价格范围等分类,这个就叫facet了。这个例子也许好不是那么准确的描述facet,不过基本上就是这个意思。对输入关键字后搜索出来的结果再进行分类。

 


 

 

二、 Facet查询

进行Facet查询需要在请求参数中加入facet=on或者facet=true只有这样Facet组件才起作用.

1. Field Facet

Facet字段通过在请求中加入facet.field参数加以声明,如果需要对多个字段进行Facet查询,那么将该参数声明多次.比如

http://localhost:8983/solr/select?q=联想&facet=on&facet.field=cpu&facet.field=videoCard

 

查询返回

 

Xml代码  收藏代码
  1. <lst name="facet_counts">  
  2.     <lst name="facet_queries"/>  
  3.     <lst name="facet_fields">  
  4.         <lst name="cpu">  
  5.             <int name="Intel 酷睿2双核 T6600">48</int>  
  6.             <int name="Intel 奔腾双核 T4300">28</int>  
  7.     <int name="Intel 酷睿2双核 P8700">18</int>  
  8. <int name="Intel 酷睿2双核 T6570">11</int>  
  9. <int name="Intel 酷睿2双核 T6670">11</int>  
  10. <int name="Intel 奔腾双核 T4400">9</int>  
  11. <int name="Intel 酷睿2双核 P7450">9</int>  
  12. <int name="Intel 酷睿2双核 T5870">8</int>  
  13. <int name="Intel 赛扬双核 T3000">7</int>  
  14. <int name="Intel 奔腾双核 SU4100">6</int>  
  15. <int name="Intel 酷睿2双核 P8400">6</int>  
  16. <int name="Intel 酷睿2双核 SU7300">5</int>  
  17. <int name="Intel 酷睿 i3 330M">4</int>  
  18.         </lst>  
  19.         <lst name="videoCard">  
  20.             <int name="ATI Mobility Radeon HD 4">63</int>  
  21.             <int name="NVIDIA GeForce G 105M">24</int>  
  22. <int name="NVIDIA GeForce GT 240M">21</int>  
  23. <int name="NVIDIA GeForce G 103M">8</int>  
  24. <int name="NVIDIA GeForce GT 220M">8</int>  
  25. <int name="NVIDIA GeForce 9400M G">7</int>  
  26. <int name="NVIDIA GeForce G 210M">6</int>  
  27.     </lst>  
  28.     </lst>  
  29.     <lst name="facet_dates"/>  
  30. </lst>  
 

 

各个Facet字段互不影响,且可以针对每个Facet字段设置查询参数.以下介绍的参数既可以应用于所有的Facet字段,也可以应用于每个单独的Facet字段.应用于单独的字段时通过

 

f.字段名.参数名=参数值

这种方式调用.比如facet.prefix参数应用于cpu字段,可以采用如下形式

f.cpu.facet.prefix=Intel

 

 

三、facet 参数

facet的参数见solr官方wiki  http://wiki.apache.org/solr/SimpleFacetParameters

 

说明:

搜索结果按照Facet的字段分组并统计

 

facet 参数字段要求

字段必须被索引

 

#.field Facet

facet=on 或 facet=true

 

1.facet.field  

分组的字段

2.facet.prefix 

表示Facet字段前缀

3.facet.limit 

Facet字段返回条数

4.facet.offict 

开始条数,偏移量,它与facet.limit配合使用可以达到分页的效果

5.facet.mincount 

Facet字段最小count,默认为0

6.facet.missing 

如果为on或true,那么将统计那些Facet字段值为null的记录

7.facet.method 

取值为enum或fc,默认为fc, fc表示Field Cache

8.facet.enum.cache.minDf 

当facet.method=enum时,参数起作用,文档内出现某个关键字的最少次数

 

例:

&facet=on

&facet.field=city_id

&facet.field=address

 

http://localhost:8983/solr/select/?q=*:*&indent=on&facet=on&facet.field=unit_price&facet.field=developer_id

 

返回结果facet_counts:

 

Xml代码  收藏代码
  1. <lst name="facet_counts">  
  2. <lst name="facet_queries"/>  
  3. <lst name="facet_fields">  
  4.     <lst name="unit_price">  
  5.         <int name="9100.0">2</int>  
  6.         <int name="1100.0">1</int>  
  7.     </lst>  
  8.     <lst name="developer_id">  
  9.         <int name="101">2</int>  
  10.         <int name="100">1</int>  
  11.     </lst>  
  12. </lst>  
  13. <lst name="facet_dates"/>  
  14. </lst>  
 

#.Date Facet

日期类型的字段

 

1.facet.date 

表示需要Data Facet的字段名

2.facet.date.start

起始时间.时间一般格式为"1995-12-31T12:59:59Z"

另外可以使用"NOW","YEAR","MONTH"等

3.facet.date.end

结束时间

4.facet.date.gap

时间间隔

5.facet.date.hardend

true|false 

6.facet.date.other

before|after|between|none|all 默认为none

before会对start之前的值做统计

after会对end之后的值做统计

between会对start至end之间的值做统计,如果hardend为true的话,那么改值就是各个时间段统计值的和

none 表示该项禁用

all 表示before,after,all都会统计

 

例:

$facet=on

&facet.date=date

&facet.date.start=2009-1-1T0:0:0Z

&facet.date.end=2010-1-1T0:0:0Z

&facet.date.gap=;1MONTH

&facet.date.other=all

 

7.facet.date.include

lower|upper|edge|outer|all

 

 

#.Facet Query

facet.query 可以对任意的字段进行筛选

 

例:

&facet=on

&facet.query=date:[2009-1-1T0:0:0Z TO 2010-1-1T0:0:0Z]

 

转自:http://martin3000.iteye.com/blog/1330106

分享到:
评论

相关推荐

    Solr分组统计

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

    solr各个热点功能详解

    Solr是一款由Java编写的搜索引擎,其核心功能包括层面搜索、高亮显示、拼写检查、搜索建议、分组统计、自动聚类和相似匹配等。Solr的优势在于其易用性,提供了基于HTTP的管理界面,支持多种输出格式,并具备良好的...

    solr基础知识介绍

    Facet指的是查询结果的分组统计功能;Document是指索引中的文档;Field指的是文档中的字段;IndexWriter用于索引的写入操作;IndexSearcher用于搜索操作;Directory是指索引存储的位置;Segment是索引的段;...

    Solr调研总结

    分组统计允许对结果进行分组计算,如按类别或时间分组;拼音检索则支持基于汉字的拼音搜索,便于用户以拼音形式进行搜索。 Solr的这些特性使得它成为企业级搜索应用的理想选择,无论是内容检索、电商产品搜索还是...

    solr查询语法.pdf

    faceted搜索是Solr的高级搜索功能之一,允许用户在搜索结果中进行分组统计。例如,可以按照商品的分类进行分组显示,提供类似面包屑导航的用户体验。在Solr中,分面查询的结果字段为facet_counts,与responseHeader...

    solr5.3.jar 相关十几个包

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

    solr-8.3.0.tgz

    总之,Apache Solr 8.3.0是一个强大且灵活的全文搜索平台,提供了丰富的功能和优秀的性能。了解并熟练掌握这些知识点,对于构建高效的企业级搜索解决方案至关重要。在实际使用中,根据具体需求进行配置和优化,可以...

    solr-5.3.2

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

    solr 企业搜索引擎教程

    - **综合统计信息**:提供关于缓存使用、更新和查询的统计信息。 - **文本分析调试**:可视化展示文本分析流程的各个阶段。 - **基于Web的查询调试**:帮助开发者理解和优化查询结果。 #### 3. Solr 的服务原理 ...

    Solr In Action 第七章 中文版

    - **FacetComponent**:实现分类功能,根据特定字段或范围对搜索结果进行分组统计。 - **HighlightingComponent**:实现高亮显示,突出显示查询关键词在文档中的位置。 - **SpellCheckComponent**:提供拼写检查功能...

    高效的企业级搜索引擎Solr

    Solr是一款高性能、可伸缩的企业级搜索引擎,广泛应用于需要复杂全文检索功能的系统中。它基于Java开发,能够提供高度灵活的配置机制,并且具备强大的索引与查询功能。Solr的核心优势在于其出色的扩展性和灵活性,这...

    solr部署教程

    Solr提供了全面的搜索和导航功能,如全文搜索、命中高亮、拼写检查、搜索建议、分组统计等,并支持多种数据输出格式,如XML、XSLT和JSON。Solr具有易安装、易配置的特点,同时还配备了HTTP管理界面,方便用户进行...

    solr in action 完整版

    - 高亮(Highlighting)和命中(Hits)统计:用户界面可以通过高亮显示匹配的文本部分,并提供关于总命中数的统计信息。 ### 知识点八:版权和出版信息 - Manning Publications Co.:是书籍的出版方。 - 本书的版权受到...

    SolrJ6.3.0

    6. **solr-analytics-6.3.0.jar**:此库提供了强大的分析功能,如计算统计信息、分组和排序,支持更复杂的搜索需求。 7. **solr-map-reduce-6.3.0.jar**:这个库允许 Solr 与 Hadoop MapReduce 框架集成,处理大...

    solr企业级全文检索

    - **集合(Collections)**:Solr支持多租户模式,集合是逻辑上的文档分组,可以独立管理和配置。 - **核心(Cores)**:在早期版本中,Solr使用核心来表示单独的索引,现在核心是集合的一个实例。 2. **...

    solrj的facet查询总结

    Facet 是 Solr 的高级搜索功能之一,可以将搜索结果按照某个字段进行分组,并对每个组进行统计。这样可以给用户提供更友好的搜索体验。 二、Facet 字段 2.1. 适宜被 Facet 的字段 Facet 字段一般代表了实体的某种...

    javaovo108

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

Global site tag (gtag.js) - Google Analytics