作者:战斗民族就是干

转载请注明地址: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:参数按照每个区间分布多少个值进行自动区间划分

solr研磨之facet的更多相关文章

  1. Solr高级查询Facet

    一.什么是facet solr种以导航为目的的查询结果成为facet,在用户查询的结果上根据分类增加了count信息,然后用户根据count信息做进一步搜索. facet主要用于导航实现渐进式精确搜索 ...

  2. solr研磨之性能调优

    作者:战斗民族就是干  转载请注明地址:http://www.cnblogs.com/prayers/p/8982141.html 本篇文章我们来了解一下solr的性能方面的调优,分为Schema优化 ...

  3. solr参数之facet

    facet就像sql语句中的group一样,是对某一个字段进行group并count,即能够按照Facet的字段进行分组并统计. 一.基本使用: 必须属性:facet=true&facet.f ...

  4. solr特点二:Facet(1)

    一.   Facet 简介 Facet 是 solr 的高级搜索功能之一 , 可以给用户提供更友好的搜索体验 . 在搜索关键字的同时 , 能够按照 Facet 的字段进行分组并统计 . 二.   Fa ...

  5. solr特点二:Facet

    返回查询集合中指定field的统计情况,例如找到city一样的文档数目: 加入文档 <add> <doc> <field name="id">1 ...

  6. Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介

    以下转载自:http://hongweiyi.com/2013/03/apache-solr-facet-introduction/ 1.什么是Faceted Search Facet['fæsɪt] ...

  7. solr研磨之游标分页

    普通分页 当需要深度分页的时候,比如查询第10000页数据,每页显示10条,意味着需要提取前10000 x 10 页的数据,并将这100000条数据缓存在内存中,然后在内存中进行排序.最后返回最后10 ...

  8. 电商指尖---(9).net发展Solr中间Facet特征

    上一节中我们演示了在SolrAdmin中使用Facet功能来进行分组统计.这一节我们看看如何使用.NET开发Solr中的Facet功能.在讲Facet功能的同一时候, 我们看下.Net中如何使用Sol ...

  9. 指尖上的电商---(8)Solr中Facet的使用方法

    在大型电子商务站点中,在商品列表页,我们都能够看到商品按分类,品牌,价格的分类显示,例如以下图,这些我们能够使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. ...

随机推荐

  1. SpringMVC源码分析--容器初始化(五)DispatcherServlet

    上一篇博客SpringMVC源码分析--容器初始化(四)FrameworkServlet我们已经了解到了SpringMVC容器的初始化,SpringMVC对容器初始化后会进行一系列的其他属性的初始化操 ...

  2. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  3. 安卓中的事件分发机制之View控件

    前言:Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent e ...

  4. iOS开发基础block的形式讲解

    前几个星期,我利用通知写了一个仿京东选择地址的Demo(http://blog.csdn.net/hbblzjy/article/details/52212879),后来看过一篇文章说,尽量少用通知, ...

  5. Hibernate3 Criteria对象详解

    1.序言 Hibernate框架是目前JavaEE软件开发的企业主流框架,学习Hibernate必然要掌握ORM(对象关系映射Object/Relation Mapping)的概念思想, Hibern ...

  6. Socket编程实践(10) --select的限制与poll的使用

    select的限制 用select实现的并发服务器,能达到的并发数一般受两方面限制: 1)一个进程能打开的最大文件描述符限制.这可以通过调整内核参数.可以通过ulimit -n(number)来调整或 ...

  7. 【一天一道LeetCode】#85. Maximal Rectangle

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  8. C++ Primer 有感(标准库vector及迭代器)

    vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vecto ...

  9. (五十一)KVC与KVO详解

    KVC的全称为key value coding,它是一种使用字符串间接更改对象属性的方法. 假设有一个Person类和一个Student类,其中Person类有age.name两个属性,Student ...

  10. CentOS安装并设置MariaDB

    作者: 铁锚 日期: 2013年12月27日 部分参考: Centos 使用YUM安装MariaDB 说明: 首先必须能链接外网. 如果不能直接访问,那也可以设置代理,请参考: 在内网机器上设置yum ...