[ lucene扩展 ] 自定义Collector实现统计功能 - MR-fox - 博客园
从上面这一坨坨代码我们可以大概看清collector在search中的应用情况。
那么统计呢?
首先我们来分析最简单的统计――"一维统计",就只对一个字段的统计。例如统计图书每年的出版量、专利发明人发明专利数量的排行榜等。
统计的输入:检索式、统计字段
统计的输出:<统计项、数量>的集合
其中关键是我们怎么拿到统计项。这个又分成以下一种情况:
1)统计字段没有存储、不分词
我们可以使用FieldCache.DEFAULT.getStrings(reader, f);获取统计项。
2)统计字段没有存储、分词
需要通过唯一标识从数据库(如果正向信息存在数据库的话)取出统计项(字段内容),然后统计分析。可想而知效率极低。
3)统计字段存储、分词
可以通过doc.get(fieldName)取出统计项,依然比较低效
4)统计字段存储、不分词
和1)类似
因此我们如果要对某个字段进行统计,那么最好选用不分词(Index.NOT_ANALYZED),这个和排序字段的要求类似!
拿到统计项后,我们可以通过累加然后排序。(这里可以借助map)
Read full article from [ lucene扩展 ] 自定义Collector实现统计功能 - MR-fox - 博客园
No comments:
Post a Comment