一、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. LINQ数据库连接对象制造工厂

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  2. VS2010对Excel操作---DLL向

    最近公司有个项目要用到Excel的操作,于是自己就对VC中关于Excel的操作进行整理了下.而这里我是直接做成DLL方便他人调用的. 创建一个MFC Dll项目. 选择MFC扩展DLL. 在“类视图” ...

  3. Oracle: Oracle行转列、列转行的Sql语句总结

    例子原型: ' ; 运行结果如下: 一.多字段的拼接 将两个或者多个字段拼接成一个字段: ' ; 运行结果: 二.行转列 将某个字段的多行结果,拼接成一个字段,获取拼接的字符串[默认逗号隔开] ' ; ...

  4. ubuntu亮度无法自动调节终极解决方案

    友情链接:IT狂人博客 这个问题纠结了我快两年,主要是自己懒,写了个脚本来调节亮度,不过还是稍显不便.近日兴起折腾了一番,终于找到问题根结了. There are many ways to contr ...

  5. jquery”ScriptResourceMapping

    要“jquery”ScriptResourceMapping.请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping.”的解决办法. 1.先将aspnet.scri ...

  6. 3D Game Programming with directx 11 习题答案 8.3

    第八章 第三题 1.将flare.dds和flarealpha.dds拷贝到工程目录 2.创建shader resource view HR(D3DX11CreateShaderResourceVie ...

  7. npm install express -g出错

    npm ERR! Windows_NT npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program ...

  8. marquee标签制作轮播图

    http://qy-0824.blog.163.com/blog/static/725075422011214142226/ 缺点是仅能控制轮播的速度.鼠标悬停暂停等,并不能给其指定链接.触摸滑动.分 ...

  9. transcode_step()在转码过程中对pts、dts、duration的处理

    对pts.dts.duration的处理主要集中在两大函数里面 1.process_input()读入数据并处理,放到滤镜里面 2.reap_filters()从滤镜读出数据,处理后写入文件 proc ...

  10. 搭建laravel5全面教学,爬坑(windows下)。

    1.首先下载屌比的Composer 2.然后下载composer.phar 3.然后下载最新版Laravel框架 4.将下载下来的laravel压缩包扔到htdocs目录下(扔到别的目录没试过) 5. ...