欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介 博客分类: solr  

程序员文章站 2024-03-18 18:54:34
...
1 、什么是Faceted Search

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

Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介
            
    
    博客分类: solr  

上面是比较直接的Faceted Search例子,品牌、产品特征、卖家,均是 Facet 。而Apple、Lenovo等品牌,就是 Facet values 或者说 Constraints ,而Facet values所带的统计值就是 Facet count/Constraint count

2 、Facet 使用

引用
q = 超级本
facet = true
facet.field = 产品特性
facet.field = 品牌
facet.field = 卖家


引用
http://…/select?q=超级本&facet=true&wt=json
&facet.field=品牌&facet.field=产品特性&facet.field=卖家


也可以提交查询条件,设置fq(filter query)。

引用
q = 电脑
facet = true
fq = 价格:[8000 TO *]
facet.mincount = 1 // fq将不符合的字段过滤后,会显示count为0
facet.field = 产品特性
facet.field = 品牌
facet.field = 卖家


引用
http://…/select?q=超级本&facet=true&wt=json
&fq=价格:[8000 TO *]&facet.mincount=1
&facet.field=品牌&facet.field=产品特性&facet.field=卖家


引用
"facet_counts": {
"facet_fields": {
  "品牌": [
    "Apple", 4,
    "Lenovo", 39
      …]
  "产品特性": [
    "显卡", 42,
    "酷睿", 38
      …]

  …}}


如果用户选择了Apple这个分类,查询条件中需要添加另外一个fq查询条件,并移除Apple所在的facet.field。

引用
http://…/select?q=超级本&facet=true&wt=json
&fq=价格:[8000 TO *]&fq=品牌:Apple&facet.mincount=1
&facet.field= 品牌 &facet.field=产品特性&facet.field=卖家


3 、Facet 参数

引用
facet.prefix  –   限制constaints的前缀

facet.mincount=0 –  限制constants count的最小返回值,默认为0

facet.sort=count –  排序的方式,根据count或者index

facet.offset=0  –   表示在当前排序情况下的偏移,可以做分页

facet.limit=100 –  constraints返回的数目

facet.missing=false –  是否返回没有值的field

facet.date –  Deprecated, use facet.range

facet.query


指定一个查询字符串作为Facet Constraint

引用
facet.query = rank:[* TO 20]
facet.query = rank:[21 TO *]


引用
"facet_counts": {
"facet_fields": {
  "品牌": [
    "Apple", 4,
    "Lenovo", 10
      …]
  "产品特性": [
    "显卡", 11,
    "酷睿", 20
      …]

  …}}


参考:http://www.tuicool.com/articles/Iv2UjiU