zoukankan      html  css  js  c++  java
  • Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介

    以下转载自:http://hongweiyi.com/2013/03/apache-solr-facet-introduction/

    1、什么是Faceted Search

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

    image

    上面是比较直接的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
          …]
     
      …}}

    facet.range

    http://…/select?&facet=true

    &facet.range=price

    &facet.range.start=5000

    &facet.range.end=8000

    &facet.range.gap=1000

     <result numFound="27" ... />
     ...
     <lst name="facet_counts">
     <lst name="facet_queries">
       <int name="rank:[* TO 20]">2</int>
       <int name="rank:[21 TO *]">15</int>
     </lst>
    ... 
     

    WARNING: range范围是左闭右开,[start, end)

    facet.pivot

    这个是Solr 4.0的新特性,pivot和facet一样难理解,还是用例子来讲吧。

    Syntax: facet.pivot=field1,field2,field3...

    e.g. facet.pivot=comment_user, grade

     

    #docs

    #docs grade:好

    #docs 等级:中

    #docs 等级:差

    comment_user:1

    10

    8

    1

    1

    comment_user:2

    20

    18

    2

    0

    comment_user:3

    15

    12

    2

    1

    comment_user:4

    18

    15

    2

    1

    "facet_counts":{
    "facet_pivot":{
     "comment_user, grade ":[{
       "field":"comment_user",
       "value":"1",
       "count":10,
       "pivot":[{
         "field":"grade",
         "value":"",
         "count":8}, {
         "field":"grade",
         "value":"",
         "count":1}, {
         "field":"grade",
         "value":"",
         "count":1}]
       }, {
         "field":" comment_user ",
         "value":"2",
         "count":20,
         "pivot":[{
          …

    没有pivot机制的话,要做到上面那点可能需要多次查询:

    http://...q=comment&fq=grade:好&facet=true&facet.field=comment_user

    http://...q=comment&fq=grade:中&facet=true&facet.field=comment_user

    http://...q=comment&fq=grade:差&facet=true&facet.field=comment_user

    Facet.pivot - Computes a Matrix of Constraint Counts across multiple Facet Fields. by Yonik Seeley.

    上面那个解释很不错,只能理解不能翻译。

  • 相关阅读:
    Security headers quick reference Learn more about headers that can keep your site safe and quickly look up the most important details.
    Missing dollar riddle
    Where Did the Other Dollar Go, Jeff?
    proteus 与 keil 联调
    cisco router nat
    router dhcp and dns listen
    配置802.1x在交换机的端口验证设置
    ASAv931安装&初始化及ASDM管理
    S5700与Cisco ACS做802.1x认证
    playwright
  • 原文地址:https://www.cnblogs.com/ontheroad_lee/p/3526367.html
Copyright © 2011-2022 走看看