2019独角兽企业重金招聘Python工程师标准>>>

在schema文件设置字段的type类型是string,不分词,只能被整个搜索。facet的该字段可以整个展示,就像淘宝的搜索条件一样。


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

查询返回

  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]

转载于:https://my.oschina.net/HuifengWang/blog/308759

Solr Facet(分片)相关推荐

  1. Solr -- Solr Facet 1

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

  2. Solr Facet 查询

    为什么80%的码农都做不了架构师?>>>    Solr Facet查询 转载请出自出处:http://eksliang.iteye.com/blog/2165882 一)概述 Fa ...

  3. Solr Facet技术的应用与研究

    问题背景 在<搜索引擎关键字智能提示的一种实现>一文中介绍过,美团的CRM系统负责管理销售人员的门店(POI)和项目(DEAL)信息,提供统一的检索功能,其索引层采用的是SolrCloud ...

  4. Solr -- Solr Facet 2

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

  5. Solr vs ElasticSearch,搜索技术哪家强

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 Solr和ElasticSearch到底有一些什么不同? ...

  6. 理解Lucene/Solr的缓存

    缓存对于提高搜索引擎的吞吐量,降低CPU占用率极为重要.Lucene/Solr在这块做了很多的工作.Lucene/Solr中默认提供了5种缓存,同时solr还提供扩展缓存接口,允许开发者自定义缓存. ...

  7. Solr 使用Facet分组过程中与分词的矛盾解决办法

    对于一般查询而言 , 分词和存储都是必要的 . 比如 CPU 类型 "Intel 酷睿 2 双核 P7570", 拆分成 "Intel"," 酷睿 & ...

  8. solr研磨之facet

    作者:战斗民族就是干 转载请注明地址:http://www.cnblogs.com/prayers/p/8822417.html Facet 开门见山,facet解决的就是筛选,我是把它理解为一种聚合 ...

  9. solr参数之facet

    facet就像sql语句中的group一样,是对某一个字段进行group并count,即能够按照Facet的字段进行分组并统计. 一.基本使用: 必须属性:facet=true&facet.f ...

最新文章

  1. laravel ajax返回json,Laravel validate error处理,ajax,json示例
  2. 怎样训练左右手协调_BF#拳击教学#自学课程:专项辅助训练【墙靶训练法+路训】...
  3. Jenkins 设置镜像_我常用的SpringBoot+Jenkins自动化部署技巧,贼好用,推荐给大家...
  4. 嵌入式成长轨迹53 【Zigbee项目】【CC2430基础实验】【串口时钟PC显示】
  5. flask框架(三):flask配置文件
  6. Python基础之格式化输出函数format()详解
  7. [转载] Python numpy insert()、 delete()、append()函数的用法
  8. Redis视频教程免费下载
  9. 自己做量化交易软件(28)小白量化实战2--变红买入变绿卖出
  10. 凤凰os 停在android,电脑的安卓系统,凤凰OS:有亮点但还很粗糙的系统
  11. 聊聊从平面设计师转为UI设计师的经历
  12. OSNet 论文翻译
  13. thinkphp如何调试,打印错误信息sql等
  14. 嵌入式软件开发之常用软件(六)
  15. winrar 百度网盘_不冲百度网盘会员,如何在手机上打开网盘里的压缩包?
  16. 15数字华容道解法 图解_数字华容道最后一行怎么解 最后一道解答技巧
  17. Fault Description Based Attribute Transfer for Zero-Sample Industrial Fault Diagnosis
  18. java正则表达式校验是否特殊字符以及空格
  19. NBA篮球图文直播室之数据排行榜设计
  20. 【P28】Enjoy The jFET 超简分立耳放

热门文章

  1. 关于java数组拷贝的性能
  2. Reflector for .NET
  3. Java条件查询分页——总结
  4. BZOJ1576: [Usaco2009 Jan]安全路经Travel(树链剖分)
  5. 关于阿里巴巴iconfont的使用方法
  6. Mac 下安装mysqldb 问题:一条命令解决mysql_config not found
  7. java 基本数据类型及自己主动类型提升
  8. 洛谷——P1910 L国的战斗之间谍
  9. HTML DOM 事件
  10. 20145227《信息安全系统设计基础》第一周学习总结