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:参数按照每个区间分布多少个值进行自动区间划分
solr研磨之facet的更多相关文章
- Solr高级查询Facet
一.什么是facet solr种以导航为目的的查询结果成为facet,在用户查询的结果上根据分类增加了count信息,然后用户根据count信息做进一步搜索. facet主要用于导航实现渐进式精确搜索 ...
- solr研磨之性能调优
作者:战斗民族就是干 转载请注明地址:http://www.cnblogs.com/prayers/p/8982141.html 本篇文章我们来了解一下solr的性能方面的调优,分为Schema优化 ...
- solr参数之facet
facet就像sql语句中的group一样,是对某一个字段进行group并count,即能够按照Facet的字段进行分组并统计. 一.基本使用: 必须属性:facet=true&facet.f ...
- solr特点二:Facet(1)
一. Facet 简介 Facet 是 solr 的高级搜索功能之一 , 可以给用户提供更友好的搜索体验 . 在搜索关键字的同时 , 能够按照 Facet 的字段进行分组并统计 . 二. Fa ...
- solr特点二:Facet
返回查询集合中指定field的统计情况,例如找到city一样的文档数目: 加入文档 <add> <doc> <field name="id">1 ...
- Solr的学习使用之(七)Solr高级查询facet、facet.pivot简介
以下转载自:http://hongweiyi.com/2013/03/apache-solr-facet-introduction/ 1.什么是Faceted Search Facet['fæsɪt] ...
- solr研磨之游标分页
普通分页 当需要深度分页的时候,比如查询第10000页数据,每页显示10条,意味着需要提取前10000 x 10 页的数据,并将这100000条数据缓存在内存中,然后在内存中进行排序.最后返回最后10 ...
- 电商指尖---(9).net发展Solr中间Facet特征
上一节中我们演示了在SolrAdmin中使用Facet功能来进行分组统计.这一节我们看看如何使用.NET开发Solr中的Facet功能.在讲Facet功能的同一时候, 我们看下.Net中如何使用Sol ...
- 指尖上的电商---(8)Solr中Facet的使用方法
在大型电子商务站点中,在商品列表页,我们都能够看到商品按分类,品牌,价格的分类显示,例如以下图,这些我们能够使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. ...
随机推荐
- javascript中的XML
IE下创建DOM并载入XML var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.load(url); //载入X ...
- 基于V4L2摄像头采集图片程序设计
#ifndef __COMMON_H #define __COMMON_H //该头文件定义的是摄像头在屏幕上显示的宽度和高度 #include<stdio.h> #include< ...
- Android View架构总结
View和Activity的区别 android的四大组件,Activity是四大组件中唯一一个用来和用户进行交互的组件.可以说Activity就是android的视图层. 如果再细化,Activit ...
- C语言省略extern的缺陷
在一个文件中(比如a.c)定义一个全局变量int a = 10; 然后在另一个代码文件(比如main.c)中需要使用变量a,可以写 int a; 单独看main.c文件时就会出现二义性,一个含义是当其 ...
- 【C++知识点】单例模式的简单实现
单例模式是最常见,也是使用最广泛的一种设计模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享. 单例模式的实现方法有很多种,本文只给出一个最简单的实现,如下: ...
- gradle2.0笔记——让项目升级到gradle2.0
昨晚看到QQ群消息说gradle2.0发布了,今天去看了一下,确实是昨天发布的,为rc版本:Gradle 2.0-rc-2.于是决定试一下. gradle可以在官网上下载,地址如下:http://ww ...
- UNIX网络编程——TCP连接的建立和断开、滑动窗口
一.TCP段格式: TCP的段格式如下图所示: 源端口号与目的端口号:源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接. 序号:序号表示在这个报文段中的第一个数据字节 ...
- 如何让 jQuery Mobile 不显示讨厌的 loading 界面
jQuery Mobile 的一个BUG: 当不采用 ajax 以及 他自己的 back 返回的时候,即: 点击浏览器后退按钮时,将会从缓存之中加载页面,此时,讨厌的 loading 动画出来了,而且 ...
- Mybatis事务(三)事务工厂
在前面一篇博客Mybatis事务(一)事务管理方式中我们提到,mybatis及spring提供了三个事务实现类:JdbcTransaction.ManagedTransaction和SpringMan ...
- 【python】网页中字符编码转换 unicode-escape
有的时候我们用python来抓取网页会得到类似 '\\u003C\\u0066\\u0072\\u006F\\u006D\\u003E' 或者 '%u003c%u0062%u0072%u003e%u0 ...