lucene/solr去重



什么是facet呢?参考wiki
比如在taobao或者京东买东西的时候,搜索手机,出现好多品牌、价格区间等分类信息,这就是分组。
也就是文档的公共属性,这可以用来做分组。

一、分组查询facet
在solr中需要开启facet=true功能即可使用,在facet功能中的各个字段如下所示:

1、q字段就类似于我们输入的搜索信息,也可以加上fq的过滤

q=title:手机


2、facet.query会使得搜索结果显示的数字比较少,

facet.query=price:[50 TO *]


3、facet.field是需要分组的公共属性,比如厂家、品牌等字段

facet.field=brand&facet.field=factory


4、facet.date用来分组时间字段,可以设置起止时间和时间的跨度

facet.date=ptime

facet.date.start=2010-1-1T0:0:0Z

facet.date.end=NOW

facet.date.gap=%2B1YEAR

gap设置的时候可以用+-/等符号,但是需要转义才能用。


5、facet.range用来分组数值字段,比如设置最大最小的价格等

facet.range=status

f.status.facet.range.start=0

f.status.facet.range.end=20

f.status.facet.range.gap=5



二、去重查询
facet vs group 区别:
facet的查询结果主要是分组信息:有什么分组,每个分组包括多少记录;但是分组中有哪些数据是不可知道的,只有进一步搜索。
group则类似于关系数据库的group by,可以用于一个或者几个字段去重、显示一个group的前几条记录等。
语法也类似于facet吧,参照wiki

注意:group适用于单个shard,如果使用solrcloud多shard,则需要保证被group的字段能分配到一个shard。
The Grouping feature only works if groups are in the same shard. You must use the custom sharding feature to use the Grouping feature.

来自:http://sling2007.blog.163.com/blog/static/84732713201352023820290/

猜你喜欢

转载自qindongliang.iteye.com/blog/2017256