`

请您先登录,才能继续操作

Solr 学习(7) —- Solr Facet

    博客分类:
  • Solr
 
阅读更多

 

一、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]

  • 大小: 76.2 KB
分享到:
评论
5 楼 tfkd丶 2016-07-15  
mark,
4 楼 WandyQian 2014-11-13  
3 楼 AKka 2013-10-21  
API上并没有详细解释这个方法,感谢楼主分享!!
2 楼 kan_si_fang 2012-12-17  
讲得不错 但是 facet没有4.facet.offict应该是facet.offset
1 楼 jiuyuehe 2012-07-24  
相当棒的。博主

相关推荐

    Solr权威指南-上卷

    本书立足全球视野,综合Solr技术的发展和应用、从业人员的学习曲线,以及中英文资料的供给情况,给自己设定了一个极高的目标:力争在内容的全面性、系统性、深浅度和实战性上概括所有的同类书。从完成的结果上来看,...

    Apache Solr(solr-7.7.3.zip)

    在查询时添加 `facet=true` 和 `facet.field=&lt;field&gt;` 参数即可启用分面。 - **命中高亮(Highlighting)**: Solr 可以在搜索结果中高亮显示匹配的关键词,提高用户体验。通过 `hl=true` 和 `hl.fl=&lt;fields&gt;` 参数...

    solr facet 笔记

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

    solrj的facet查询总结

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

    Solr学习笔记。。

    2. 查询价格在0到400之间的商品,返回id、name和price字段,并按类别进行 faceting:`http://localhost:8983/solr/select?q=price:[0%20TO%20400]&fl=id,name,price&facet=true&facet.field=cat` 通过以上步骤,你...

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

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

    Solr分组统计

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

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

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

    multi-select-facet:Apache Solr,Vue和Go的多选方面示例

    博客文章:运行示例使用运行Solr。 $ make start-solr 或使用docker 。 $ PODMAN=docker make start-solr 运行API // build the api$ go build -v -o api// start the api with the initialization options$ ./api ...

    java进阶Solr从基础到实战

    7. SolrJ 章节三:Solr高级(上) 1. Solr Cloud 2. 函数查询 3. 地理位置查询 4. JSON Facet 章节四:Solr高级(下) 1. 深度分页 2. Solr Join查询 3. 相关度排序 4.Solr缓存 5.Spring Data Solr 章节五:综合...

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

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

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

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

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

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

    高效的企业级搜索引擎Solr

    例如,在使用`facet`和`fq`参数时,合理调整filterCache可以大幅提升性能表现。 ##### 3. 查询结果缓存(queryResultCache) queryResultCache用于缓存查询结果,这里的缓存是针对完全有序的结果集。通过缓存查询...

    solr基础知识介绍

    Solr支持实时获取文档的最新版本,原子更新文档,支持多层Facet,并且提供了基于关联度的Pseudo-Join操作。Solr还具备Web管理界面,并支持SolrCloud。 Solr的术语部分涉及到了多个与Solr操作相关的概念,例如Auto-...

    solr_api

    - **Faceting**:Solr支持字段统计(Faceting),可以通过`facet.field`和`facet.query`参数来实现,帮助用户分析数据分布。 - **统计函数**:通过`stats`参数可以计算字段的统计信息,如平均值、总和、最大值、...

    solr4.7中文企业开发参考文档

    Solr,全称为Apache Solr,是一款开源的企业级搜索引擎,由Apache软件基金会开发。...提供的文档“SOLR中文教程.doc”和“Solr4.7中文学习手册.docx”将更深入地阐述这些概念和操作方法,为开发者提供详尽的指导。

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

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

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

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

    数据挖掘之solr搜索引擎高级教程(Solr集群、KI分词)第19讲 solr之MoreLikeThis共10页.pptx

    Solr集群安装与配置(一)第11讲 Solr集群安装与配置(二)第12讲 SolrCloud基本概念第13讲 Solrj操作SolrCloud第14讲 solr索引主从同步第15讲 solr之Facet第16讲 solr之FacetPivot第17讲 solr之Group第18讲 solr之...

Global site tag (gtag.js) - Google Analytics