lucene/solr去重
[b][size=medium]
什么是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-1T00Z
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.[/size][/b]
来自:http://sling2007.blog.163.com/blog/static/84732713201352023820290/
还没有评论,来说两句吧...