zoukankan      html  css  js  c++  java
  • solr研磨之facet

    作者:战斗民族就是干

    转载请注明地址:http://www.cnblogs.com/prayers/p/8822417.html

    Facet  

    开门见山,facet解决的就是筛选,我是把它理解为一种聚合。

      例如,商品属性中的品牌名称。例如:搜索召回了100个sku,这100个sku里面包含在20个品牌里面,那我如何聚合出这20个品牌呢?solr给我们提供了强大的API,facet,基本用例如下

    http://localhost:8080/solr/b2b/select?q=*:*&wt=json&indent=true&facet=true&facet.field=brandName

      这里需要注意的是:如果brandName配置了分词器,facet的结果是对域的域值分词后得到的每一个唯一的词进行分组统计。

      facet不仅仅可以支持单值域的分组统计,还支持多值域,文本域,嵌入式facet的统计。需要注意的是:在进行文本域的facet的时候大量的噪音词会影响你返回的结果,这时候需要对文本域配置停用词过滤器

      还有一种情况,比如说品牌名称,我既需要查询做分词处理,又需要进行facet统计。但是分词后facet的结果并不是我想要的,我想要的是不做分词处理的facet的结果。这个时候我们可以使用复制域CopyField,将品牌名称作为一个新域,并且是域的类型是StringFilter。copyField使用用例如下:  

    <copyField  source="brandName"  dest="copyBrandName"  maxChars="30000" />

    source:需要拷贝的域名称

    dest:被拷贝的域名称

    maxChars:限制复制的字符数

      单个域的facet用例如下  

    http://localhost:8080/solr/b2b/select?q=*:*&wt=json&indent=true&facet=true&facet.field=brandName

      多个域的facet用例如下  

    http://localhost:8080/solr/b2b/select?q=*:*&wt=json&indent=true&facet=true&facet.pivot=brandCode,brandName

      区间facet

    http://localhost:8080/solr/b2b/select?q=*%3A*&wt=json&indent=true&facet=true&facet.range=price&facet.range.gap=10&facet.range.start=0&facet.range.end=10000

      facet.range:表示对那个域执行facet区间查询,facet.range.start表示区间的上限值,facet.range.end表示区间的下限值,facet.range.gap:参数按照每个区间分布多少个值进行自动区间划分

  • 相关阅读:
    WordPress 常用的动作钩子
    wordpress的过滤器
    实战haslayout(实战篇)!
    wordpress函数描述之一——WordPress add_theme_support() 函数
    一些闲言碎语,好记星不如烂笔头(一)
    实战haslayout(理论篇)!
    WordPress的钩子函数之一——do_action()
    IE6变态bug总结非常好!没有错误
    Javascript参考博客
    SilverLight遍历父子控件的通用方法
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9510908.html
Copyright © 2011-2022 走看看