一、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
查询返回
- <lst name="facet_counts">
- <lst name="facet_queries"/>
- <lst name="facet_fields">
- <lst name="cpu">
- <int name="Intel 酷睿2双核 T6600">48</int>
- <int name="Intel 奔腾双核 T4300">28</int>
- <int name="Intel 酷睿2双核 P8700">18</int>
- <int name="Intel 酷睿2双核 T6570">11</int>
- <int name="Intel 酷睿2双核 T6670">11</int>
- <int name="Intel 奔腾双核 T4400">9</int>
- <int name="Intel 酷睿2双核 P7450">9</int>
- <int name="Intel 酷睿2双核 T5870">8</int>
- <int name="Intel 赛扬双核 T3000">7</int>
- <int name="Intel 奔腾双核 SU4100">6</int>
- <int name="Intel 酷睿2双核 P8400">6</int>
- <int name="Intel 酷睿2双核 SU7300">5</int>
- <int name="Intel 酷睿 i3 330M">4</int>
- </lst>
- <lst name="videoCard">
- <int name="ATI Mobility Radeon HD 4">63</int>
- <int name="NVIDIA GeForce G 105M">24</int>
- <int name="NVIDIA GeForce GT 240M">21</int>
- <int name="NVIDIA GeForce G 103M">8</int>
- <int name="NVIDIA GeForce GT 220M">8</int>
- <int name="NVIDIA GeForce 9400M G">7</int>
- <int name="NVIDIA GeForce G 210M">6</int>
- </lst>
- </lst>
- <lst name="facet_dates"/>
- </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:
- <lst name="facet_counts">
- <lst name="facet_queries"/>
- <lst name="facet_fields">
- <lst name="unit_price">
- <int name="9100.0">2</int>
- <int name="1100.0">1</int>
- </lst>
- <lst name="developer_id">
- <int name="101">2</int>
- <int name="100">1</int>
- </lst>
- </lst>
- <lst name="facet_dates"/>
- </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]
相关推荐
`EasyNet.Solr`可能是核心库,包含了与Solr服务器通信的代码和逻辑,而`ClientDemo`很可能是演示应用,用于展示如何使用`EasyNet.Solr`库来实现分组统计和facet功能。 总的来说,这个示例展示了如何利用`easysolr...
Solr是一款由Java编写的搜索引擎,其核心功能包括层面搜索、高亮显示、拼写检查、搜索建议、分组统计、自动聚类和相似匹配等。Solr的优势在于其易用性,提供了基于HTTP的管理界面,支持多种输出格式,并具备良好的...
Facet指的是查询结果的分组统计功能;Document是指索引中的文档;Field指的是文档中的字段;IndexWriter用于索引的写入操作;IndexSearcher用于搜索操作;Directory是指索引存储的位置;Segment是索引的段;...
分组统计允许对结果进行分组计算,如按类别或时间分组;拼音检索则支持基于汉字的拼音搜索,便于用户以拼音形式进行搜索。 Solr的这些特性使得它成为企业级搜索应用的理想选择,无论是内容检索、电商产品搜索还是...
faceted搜索是Solr的高级搜索功能之一,允许用户在搜索结果中进行分组统计。例如,可以按照商品的分类进行分组显示,提供类似面包屑导航的用户体验。在Solr中,分面查询的结果字段为facet_counts,与responseHeader...
6. **solr-analytics-5.3.0.jar**:这个组件提供了高级的统计和分析功能,如聚合查询、计算标准偏差、平均值等。它使得 Solr 不仅能进行基础的全文搜索,还能进行复杂的数据分析。 7. **solr-map-reduce-5.3.0.jar*...
总之,Apache Solr 8.3.0是一个强大且灵活的全文搜索平台,提供了丰富的功能和优秀的性能。了解并熟练掌握这些知识点,对于构建高效的企业级搜索解决方案至关重要。在实际使用中,根据具体需求进行配置和优化,可以...
同时,5.3.2引入了更强大的聚合功能,支持统计计算、分组、排序等高级查询操作。 6. **更新处理链**:Solr的Update Request Processor链允许在索引文档之前或之后执行一系列操作,如字段值的转换、删除重复的文档等...
- **综合统计信息**:提供关于缓存使用、更新和查询的统计信息。 - **文本分析调试**:可视化展示文本分析流程的各个阶段。 - **基于Web的查询调试**:帮助开发者理解和优化查询结果。 #### 3. Solr 的服务原理 ...
- **FacetComponent**:实现分类功能,根据特定字段或范围对搜索结果进行分组统计。 - **HighlightingComponent**:实现高亮显示,突出显示查询关键词在文档中的位置。 - **SpellCheckComponent**:提供拼写检查功能...
Solr是一款高性能、可伸缩的企业级搜索引擎,广泛应用于需要复杂全文检索功能的系统中。它基于Java开发,能够提供高度灵活的配置机制,并且具备强大的索引与查询功能。Solr的核心优势在于其出色的扩展性和灵活性,这...
Solr提供了全面的搜索和导航功能,如全文搜索、命中高亮、拼写检查、搜索建议、分组统计等,并支持多种数据输出格式,如XML、XSLT和JSON。Solr具有易安装、易配置的特点,同时还配备了HTTP管理界面,方便用户进行...
- 高亮(Highlighting)和命中(Hits)统计:用户界面可以通过高亮显示匹配的文本部分,并提供关于总命中数的统计信息。 ### 知识点八:版权和出版信息 - Manning Publications Co.:是书籍的出版方。 - 本书的版权受到...
6. **solr-analytics-6.3.0.jar**:此库提供了强大的分析功能,如计算统计信息、分组和排序,支持更复杂的搜索需求。 7. **solr-map-reduce-6.3.0.jar**:这个库允许 Solr 与 Hadoop MapReduce 框架集成,处理大...
- **集合(Collections)**:Solr支持多租户模式,集合是逻辑上的文档分组,可以独立管理和配置。 - **核心(Cores)**:在早期版本中,Solr使用核心来表示单独的索引,现在核心是集合的一个实例。 2. **...
Facet 是 Solr 的高级搜索功能之一,可以将搜索结果按照某个字段进行分组,并对每个组进行统计。这样可以给用户提供更友好的搜索体验。 二、Facet 字段 2.1. 适宜被 Facet 的字段 Facet 字段一般代表了实体的某种...
3. 高级功能:包括高亮显示(突出显示查询词)、拼写检查(纠正用户输入错误)、搜索建议(自动补全)、分组统计(按类别聚合结果)、拼音检索(支持中文的音节搜索)等。 总之,Solr是一个强大的企业级搜索解决...