`
lzzy_alex
  • 浏览: 29116 次
社区版块
存档分类
最新评论

Solr Facet 技术应用

    博客分类:
  • Solr
 
阅读更多

Solr Facet 简述

Facet是Solr检索的高级特性,基于搜索结果进行归类统计,生成范围更精确的导航信息,帮助与引导用户搜索,降低大结果的查找难度。如下图的各品牌,类别,价格等信息都可以通过Facet技术实现。



 

文章目标

本文将通过对Facet常用特性的学习,实现上图的导航效果,并简单类比Grouping特性。以下内容是基于 solr5.3.0 版本描述的。

 

Facet 特性

Facet 搜索特性可以分为以下几个部分

 

1. 一般性参数(General Parameters)

facet:facet 缺省是关闭的,需要显式打开才可以使用。打开方式也很简单,只需要添加参数 facet=true 就可以了。

facet.query:query可以传递任意符合Lucene语法的查询条件,solr会根据条件生成相应的统计信息。

比如facet.query=title:感冒,表示统计域<title>中包含<感冒>的Term的文档计数 :

 

select?q=*:*&wt=xml&indent=true&facet=true&facet.query=title:感冒

 

<lst name="facet_queries">
  <int name="title:感冒">100</int>
</lst>

 

从结果可以看到命中文档有100篇,query也支持范围查询与前缀查询,比如

facet.query=price:[10 TO 100],表示统计price介于[10,100]的文档,

facet.query=date:[2006-01-01T00:00:00Z TO 2009-01-01T00:00:00Z],表示统计date介于06年到09年的文档。

 

2. Field-Value参数(Field-Value Faceting Parameters)

该类别用以表示需要对哪个Field进行归类统计。比如品牌类别统计:

 

select?q=*:*&wt=xml&indent=true&facet=true&facet.field=brand

 

表示对品牌域< brand>归类,如果归类结果很多的话可以使用[ facet.limit,facet.offset ]参数控制分页,统计结果缺省是按照命中条目数量,倒序返回前100条:

<lst name="facet_fields">
  <lst name="brand">
    <int name="葫芦娃">200</int>
    <int name="天赐堂">100</int>
  </lst>
</lst>

从结果中可以看到品牌<葫芦娃>的命中文档为200篇,<天赐堂>为100篇。那么我们就可以使用solr生成的统计结果完成章节目标的品牌,类别导航生成了。

 

3. 范围统计(Range Faceting)

主要针对数值, 日期范围的匹配场景,常用于价格,时间区间的导航生成。因实现方式都相似,这里就以价格区间为例:

 

select?q=*:*&wt=xml&indent=true&facet=true&facet.range=price&facet.range.start=0&facet.range.end=100&facet.range.gap=20

其中start,end 表示统计的价格区间,gap表示区间间隙。

<lst name="facet_ranges">
  <lst name="price">
    <lst name="counts">
      <int name="0">10</int>
      <int name="20">30</int>
      <int name="40">0</int>
      <int name="60">0</int>
      <int name="80">0</int>
    </lst>
    <int name="gap">20</int>
    <int name="start">0</int>
    <int name="end">100</int>
  </lst>
</lst>

 

从结果可以看到,价格位于 0-20 有10篇命中,20-40有30篇命中,其余区间无命中。那么我们就可以通过facet的命中结果,自实现动态价格区间,如 0-20  20以上,至此完成了价格区间的导航生成。

 

Faceting 与 Grouping

两者在口语表达上是很相似的,区别在于展示维度不一样,即适用于不同的场景。例如,有以下三篇文档:

Object 1

  name: Phaser 4620a

  ppm: 62

  product_range: 6

Object 2

  name: Phaser 4620i

  ppm: 65

  product_range: 6

Object 3

  name: ML6512

  ppm: 62

  product_range: 7

 

假如对域 "product_range" 进行 group 操作,得到的结果是2,并可以返回topN条记录,类似于数据库group by。对域 "ppm" 进行 facet 操作,返回的结果是62有2篇,65有1篇,只有统计结果,不会返回详细记录。所以,应该根据应用场景选择合适的展现方式,从而决定使用 facet  还是 group 。

 

小结

Facet的目标是基于检索结果,生成服务性导航目录 ,引导用户在大结果集下,更有效地命中目标。常用实现方式有 Facet-Query, Field-Value Faceting, Range Faceting。 

 

More: 更详尽的命令参数与Pivot功能,请另行参考相关文档。

 

参考资料

apache-solr-ref-guide-5.3.pdf

http://wiki.apache.org/solr/SimpleFacetParameters

 

  • 大小: 13.3 KB
分享到:
评论

相关推荐

    solr facet 笔记

    solr facet 笔记

    solr技术文solr技术文

    solr技术文solr技术文solr技术文

    Solr 3.5开发应用教程.pdf

    Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache ...定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述所有 Field 及其内容的 XML 文档就可以了。

    solr开发应用教程

    Solr 3.5开发应用教程,偏实战

    solrj的facet查询总结

    solrj的facet查询总结

    Solr技术培训资料(基础知识+高级应用)。

    这是我整理的关于Solr的技术培训资料,它包含了关于Solr的基础知识和高级应用,例如分组、分词器、权重等问题,因为本人在学习solr时发现资源太少,所以整理了一些,当然由于本人技术不足,难免知识点不够全面,有...

    SOLR的应用教程

    3.1.1 Solr的应用模式 29 3.1.2 SOLR的使用过程说明 30 3.2 一个简单的例子 30 3.2.1 Solr Schema 设计 30 3.2.2 构建索引 30 3.2.3 搜索测试 31 3.3 搜索引擎的规划设计 32 3.3.1 定义业务模型 32 3.3.2 定制索引...

    Solr权威指南-上卷

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

    开源企业搜索引擎SOLR的_应用教程.pdf

    开源企业搜索引擎SOLR的_应用教程

    一个用Solr做企业应用内的搜索引擎的Springboot项目

    一个用Solr做企业应用内的搜索引擎的Springboot项目,适合正在入门solr和深入学习solr

    Solr3.5开发应用指导

    基于Solr3.5的最新开发应用指导,文字加代码说明模式(Schedule.xml)、配置(solrconfig.xml)、索引,搜索等详细开发内容。

    solr技术文档

    solr技术标书文档,记录了solr的相关技术要点solr技术标书文档,记录了solr的相关技术要点

    Solr权威指南-下卷

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

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

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

    Solr技术分析及运用

    Solr技术分析及运用

    solr部署技术文档

    solr是一个基于lucene的全文检索引擎。他包括了全文检索,命中高亮,准实时搜索,富文本检索等特性. Solr是用Java编写的,并作为一个独立的全文搜索服务器,比如tomcat容器内运行。Solr的全文索引和搜索其核心使用了...

    solr3.5配置及应用

    初学者学习solr时,可以借助此文档入门,学习solr

    solr技术分析及运用超详细教程

    solr技术分析及运用超详细教程solr开发指南,包括solr服务器搭建,新增数据库配置,配置增量更新,配置分词器,常见异常,删除默认字段,调试技巧,solr日志,,solr基本查询语法,solr多字段匹配,solri集成solr...

    solr简单应用操作 (一)

    solr的简单应用和讲解操作,看书和查资料完成的。

Global site tag (gtag.js) - Google Analytics