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

Solr -- Solr Facet 1的更多相关文章

  1. Solr -- Solr Facet 2

    solr将以导航为目的的查询结果称为facet. 它并不会修改查询结果信息, 只是在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, 比如淘宝的查询列表中, 上面会 ...

  2. 电商指尖---(9).net发展Solr中间Facet特征

    上一节中我们演示了在SolrAdmin中使用Facet功能来进行分组统计.这一节我们看看如何使用.NET开发Solr中的Facet功能.在讲Facet功能的同一时候, 我们看下.Net中如何使用Sol ...

  3. solr中facet及facet.pivot理解(整合两篇文章保留参考)

    Facet['fæsɪt]很难翻译,只能靠例子来理解了.Solr作者Yonik Seeley也给出更为直接的名字:导航(Guided Navigation).参数化查询(Paramatic Searc ...

  4. solr中facet及facet.pivot理解

    Facet['fæsɪt]很难翻译,只能靠例子来理解了.Solr作者Yonik Seeley也给出更为直接的名字:导航(Guided Navigation).参数化查询(Paramatic Searc ...

  5. Solr中Facet用法和Group用法

    Group分组划分结果,返回的是分组结果: Facet分组统计,侧重统计,返回的是分组后的数量: 一.Group用法: //组查询基础配置params.set(GroupParams.GROUP, & ...

  6. 指尖上的电商---(8)Solr中Facet的使用方法

    在大型电子商务站点中,在商品列表页,我们都能够看到商品按分类,品牌,价格的分类显示,例如以下图,这些我们能够使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. ...

  7. Solr 01 - 什么是Solr + Solr安装包目录结构说明

    目录 1 Solr概述 1.1 Solr是什么 1.2 Solr与Lucene的区别 2 Solr文件说明 2.1 Solr的目录结构 2.2 其他常用概念说明 2.3 创建基础文件目录 2.4 so ...

  8. [solr]solr的安装

    solr是什么? 翻译: SolrTM is the popular, blazing fast open source enterprise search platform from the Apa ...

  9. (三)Solr——Solr的基本使用

    1. Schema.xml 在schema.xml文件中,主要配置了solrcore的一些数据信息,包括Field和FieldType的定义等信息,在solr中,Field和FieldType都需要先 ...

随机推荐

  1. OpenXML: Asp.net利用OpenXML 导出Excel.

    http://www.cnblogs.com/skyfei/archive/0001/01/01/Openxml.html

  2. .NET设计模式(2):单件模式(Singleton Pattern)

    转载:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html 单件模式(Singleton Pattern) --.NET设计模式系列之二 ...

  3. 线程池ThreadPoolExecutor使用简介

    一.简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int ...

  4. AcroExch.Rect 单位、属性问题

    AcroExch.Rect  有四个属性:Top,Right,Left,Buttom 1.单位:point,一般通过英寸换算,1point=1/72 inch(英寸) 2.属性:Top: 区域距离 x ...

  5. Hadoop学习第一天

    1.hadoop量大,数目多. 存储:分布式,集群的概念,管理(主节点.从节点),HDFS. 分析:分布式.并行.离线计算框架,管理(主节点.从节点),MapReduce. 来源:GFS->HD ...

  6. RHEL 7特性说明(六):集群

    来自:Linux中国  2014-07-16 00:00:00  ed Hat Enterprise Linux 7.0 是 Red Hat 的下一代操作系统完整套件,旨在用于关键任务企业级计算以及顶 ...

  7. VC皮肤库之duilib

    首先是个国产的开源 的,directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 .Window CE.Mobile等平台. Duilib ...

  8. VS下面的编译错误-----转换到 COFF 期间失败: 文件无效或损坏

    最近写了一个vs的小项目,然后编译的时候vs提示了"转换到 COFF 期间失败: 文件无效或损坏"的问题. 去网上搜索了一个解决方案.原作者的链接是:http://jingyan. ...

  9. hexdump——Linux系统的二进制文件查看工具

    hexdump是Linux下的一个二进制文件查看工具,可以将二进制文件转换为ASCII.10进制.16进制或8进制进行查看. 首先我们准备一个测试用的文件test,十六进制如下: 00 01 02 0 ...

  10. 前端开发福音!阿里Weex跨平台移动开发工具开源-b

    阿里巴巴今天在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请.Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS.安卓.YunOS及 ...