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

转载于:https://www.cnblogs.com/wych/p/4097853.html

Solr -- Solr Facet 1相关推荐

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

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

  2. Solr -- Solr Facet 2

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

  3. solr中facet及facet.pivot理解

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

  4. cloudtalk 无法连接到消息服务器,solr - Solr Cloud down无法与Zookeeper对话客户端会话超时 - 堆栈内存溢出...

    我有在16GB RAM内存上运行的solr云,用于分片的2个solr节点(相同ip),嵌入式zookeeper. 我在默认配置上运行solr,尽管默认配置随附-Xms5g-Xmx5g,但我在Solr仪 ...

  5. [solr] solr Similarity:切换不同相似度计算方法

    Similarity改变solr的打分机制: solr本身已经提供了几种算法 org.apache.solr.search.similarities.BM25SimilarityFactory org ...

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

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

  7. 搜索引擎之---Apache solr的实现

    Solr 是一种可供企业使用的.基于 Lucene 的搜索服务器,它支持层面搜索.命中醒目显示和多种输出格式.在这篇分两部分的文章中,Lucene Java™ 的提交人 Grant Ingersoll ...

  8. 【转载】solr教程,值得刚接触搜索开发人员一看

    转载:http://blog.csdn.net/awj3584/article/details/16963525 Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍 ...

  9. solr java浏览器访问_solr解决访问安全

    Tomcat7,solr3.6,mmseg1.8 1:环境的搭建 1:解压tomcat,solr,mmseg4j 2:复制dist文件夹下apache-solr.war到tomcat的webapp文件 ...

最新文章

  1. 实验0 了解和熟悉操作系统
  2. 全球缺芯的后果来了——网站推广之下小米宣布部分电视产品型号要涨价!
  3. windoes硬盘备份(数据迁移)的方法
  4. MVC案例——模糊查询
  5. jzoj1768,P2704,POJ1185-[NOI2001]炮兵阵地【状态压缩dp】
  6. 装饰器设计模式的应用
  7. odps新手上路之安装Eclipse开发环境
  8. 简单利用HTTP中的PUT协议拿下SHELL
  9. 大数据数据收集数据困难_大数据就是好数据吗?研究人员在处理大数据集时遭遇的 5 大挑战...
  10. 扫地机器人开机充电还是关机充电器_适用于智能扫地机器人的充电方法与流程...
  11. 《C++语言基础》实践参考——我的向量类
  12. android word设计模式,word07设计模式
  13. java 私有成员方法_Java Reflection 教程(7):类私有成员变量和方法
  14. (转)RabbitMQ学习之安装
  15. JAVA多线程--线程的同步安全
  16. python主流测试框架的简介
  17. SPSS方差分析应该如何进行
  18. Python实战——过采样数据的处理之改进的SMOTE算法
  19. 微信公众号获取用户地理位置
  20. 【无线篇】(6.0) ❀ 10. FortiCloud 管理 AP (上) ❀ FortiAP 无线AP

热门文章

  1. 基於IIS的WCF的分布式多層架構開發實現
  2. 几个WinCE开发的网址
  3. 转:读AD里特殊的属性in C#
  4. django创建项目案例1详细介绍方法01
  5. [20180627]测试bbed是否支持管道命令.txt
  6. mysql主从复制篇-主库有数据
  7. android adb命令,向开发手机添加文件
  8. 总结—elasticsearch启动失败的几种情况及解决
  9. 笔记JavaScript基本概念
  10. 第四章 .net core做一个简单的登录