Solr facet 分析


此文原创,转载请说明出处:http://ronxin999.blog.163.com/blog/static/42217920201110682657684/

Solr FacetComponent是实现对词Term的层面统计。FacetComponent给客户端返回四种类型的结果,分别是:
facet_queries,facet_fields,facet_dates,facet_ranges,我们用的最多是facet_fields,即对field的词出现的个数的一个统计。下面开始讲solr实现的原理。
因为我们在用到FacetComponent时,查询请求的url里定要加上facet=true.FacetComponet是发挥作用前,QueryComponent会先处理q参数里的查询,查询的结果的DocID保存在DocSet里,这里是一个无序的document ID 的集合。QueryComponent处理完后,把docSet封装到SimpleFacets里,在FacetComponent会用到。
FacetComponent 在根据某个field的词时,会用到fieldValueCache,key是facet.field的值,value是UnInvertedField,
UnInvertedField这个类主要负责完成把field域每个词Term,以及词Term在所有文档field域的频率,即出现的次数。保存在一个数组中,创建的UnInvertedField保存在fieldValueCache缓存中,
得到UnInvertedField后,调用UnInvertedField的getCounts方法,跟查询到的document ID 做交集,如果不是查询结果的document ID,,则该Field的词的个数为0,除此之外,还对field出现的词做一个排序,solr的FacetComponet有两种排序选择,分别是count和index,count是按每个词出现的次数,index是按词的字典顺序。如果查询参数不指定facet.sort,solr默认是按count排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值