分组统计后如何按指定的方式排序返回
2010-07-17 23:50
232 查看
简介
当通过指定的facets对文档进行统计后按指定的排序方式返回。默认可指定的排序方式
Bobo Browse 的API中提供了2种默认的排序方式:如下面根据颜色统计的例子:
根据值升序排序:
程序中的代码设置如下:
faceSpec.setOrderBy(FacetSortSpec.OrderValueAsc); 输出结果如下:
blue (2)
green (19)
red (21)
yellow (20)
根据结果数降序排序:
程序中的代码设置如下:
faceSpec.setOrderBy(FacetSortSpec.OrderHitsDesc);
输出结果如下:
red (21)
yellow (20)
green (19)
blue (2)
自定义排序
它可以通过继承API实现你特有的排序方式:首先,实现ComparatorFactory 接口:
public interface ComparatorFactory{ Comparator<Integer> newComparator(FieldValueAccessor fieldValueAccessor,int[] counts); Comparator<BrowseFacet> newComparator(); }
如下面的例子,自定义一个实现ComparatorFactory 接口的类按统计结果降序排序:
public class FacetHitcountComparatorFactory implements ComparatorFactory {
public Comparator<Integer> newComparator(FieldValueAccessor valueList,
final int[] counts) {
return new Comparator<Integer>(){
public int compare(Integer f1, Integer f2) {
int val = counts[f1] - counts[f2];
if (val==0){
val=f2-f1;
}
return val;
}
};
}
public Comparator<BrowseFacet> newComparator() {
return new Comparator<BrowseFacet>(){
public int compare(BrowseFacet f1, BrowseFacet f2) {
int val = f1.getHitCount() - f2.getHitCount();
if (val==0){
val=f1.getValue().compareTo(f2.getValue());
}
return val;
};
}
}
接着, 实例化这个类到FacetSpec中,排序order by指定枚举类型为OrderByCustom:
FacetHitcountComparatorFactory myComparatorFactory = new FacetHitcountComparatorFactory();
facetSpec.setOrderBy(FacetSortSpec.OrderByCustom); facetSpec.setCustomComparatorFactory(myComparatorFactory);
注意,如果没有设置setCustomComparatorFactory,而排序类型设为OrderByCustom,则会抛出IllegalArgumentException 异常。
引用原文:http://snaprojects.jira.com/wiki/display/BOBO/Facet+Sorting
相关文章推荐
- LINQ分组时如何进行组内排序?另外如何仅返回每组中满足条件的行(如Id最大的)?
- 找出所有符合条件的记录的指定字段并分组统计个数,返回指定格式。
- 找出所有符合条件的记录的指定字段并分组统计个数,返回指定格式。
- Android分享中,如何过滤指定的应用,并且对不同的分享方式发送不同的内容?
- 聚合分组指定排序
- java的Comparator接口如何对指定类型进行排序。
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- ruby 数组指定方式排序
- VMware Fusion DHCP方式下如何指定虚拟机IP地址
- Linq对DataTable或者集合的排序,Where筛选,分组,统计总数sum等操作
- SQL数据进行排序、分组、统计10技巧
- 水晶报表分组统计中如何让字段值居中显示
- 如何统计指定目录下的文件个数
- SQL进行排序、分组、统计技巧
- Python中对Tuple之间排序时如何指定第几个元素为关键字排序的问题
- ios开发navigationController pushViewController 方式多次跳转 怎么返回到最上层,怎么返回到指定的某一层
- MySQL 分组之后如何统计记录条数 gourp by 之后的 count()
- Asp.Net MVC中不指定View Name时如何返回ActionResult的
- SQL数据进行排序、分组、统计10技巧
- spring项目如何统计所有请求的返回码--项目安全防刷统计