bobo
文章平均质量分 80
eric509
这个作者很懒,什么都没留下…
展开
-
Bobo源代码分析(BoboIndexReader和BoboSubBrowser)
BoboIndexReader继承于FilterIndexReader,这个类是对IndexReader的进一步包装,首先看构造函数protected BoboIndexReader(IndexReader reader, Collection<FacetHandler<?>> facetHandlers,...原创 2012-08-24 15:26:33 · 293 阅读 · 0 评论 -
Bobo源码笔记1
Bobo将field的数据缓存到内存中,与lucene中的FieldCache类的作用相似。抽象类 FacetHandler<D> 是最基本的类,对于BoboIndexReader,它像一个工具,用于获取数据,然后存储到内存中。以最简单的实现类SimpleFacetHandler做分析。SimpleFacetHandler只能做简单的归类,比如在电商应用中,一个Docme...原创 2012-08-27 16:04:16 · 241 阅读 · 0 评论 -
Bobo源码笔记3(构建Filter)
browse()函数中有一行代码: filter = handler.buildFilter(sel); 用于构建filter,下面是FacetHandler的函数buildFilter()的实现,其中buildRandomAccessFilter()是主要实现函数: public final RandomAccessFilter buildFilter(...原创 2012-08-31 10:39:22 · 199 阅读 · 0 评论 -
Bobo源码笔记4(collector的创建)
Bobo的收集器基类是SortCollector继承于lucene的Collector类,其中函数是获取收集器的外部接口: public static SortCollector buildSortCollector(Browsable browser,Query q,SortField[] sort,int offset,int count,boolean forceScoring,bo...原创 2012-09-03 16:03:14 · 176 阅读 · 0 评论 -
Bobo源码笔记5(结果的筛选和收集)
当BoboSubBrowser的browse()函数创建好filter和collector以后,那么就进入最后的阶段了,从索引中获取倒排表,进行过滤和收集,这一过程在类BoboSearcher2的search()函数中实现: public void search(Weight weight, Filter filter, Collector collector, int start)...原创 2012-09-05 11:16:32 · 161 阅读 · 0 评论 -
Bobo源码笔记2(创建FacetValidator)
在browse()函数中有这样一段代码。这段代码做了两件事:一,根据每个facet的过滤条件创建filter;二,根据每个facet的分组计数规则创建FacetHitCollector: for (String name : fields)//对应于每一个Facet { //得到该facet的筛选条件 BrowseSelection ...原创 2012-09-05 17:39:04 · 94 阅读 · 0 评论 -
Bobo源码笔记6(结果的筛选和收集(2))
browse()函数的最后部分,是对分组计数结果的一个整理: finally { //每个Facet对应一个FacetHitCollector for (FacetHitCollector facetCollector : facetHitCollectorList) { String name...原创 2012-09-06 17:49:10 · 183 阅读 · 0 评论 -
Bobo源码笔记7(RangeFacetHandler)
对于范围过滤分组计数的应用,bobo采用RangeFacetHandler解决问题。RangeFacetHandler的其他部分与SimpleFacetHandler差不多,主要区别在getFacetCountCollector()函数这边,返回的是RangeFacetCountCollector实例: @Override public FacetCountCollector...原创 2012-09-13 18:02:19 · 152 阅读 · 0 评论