Solr使用函数排序

电子商务搜索引擎http://demo.rivues.com:195中有一个功能是按照销售量排序,销售量的数据是实时统计的,检索的时候有一个功能是按照销售量来排序,这个功能用到了Solr的函数排序(Sort By Function,Solr 4.0的功能,Solr 4.0还有一个比较有用的功能是分组统计 group),自定义的函数代码如下:

public class SortSalesFunction extends SimpleFloatFunction {
	public SortSalesFunction(ValueSource source) {
		super(source);
	}
	protected String name() {
		return "sales";
	}
	/**
	 * 
	 */
	protected float func(int doc, DocValues vals) {
		SalesData salesData = RivuDataContext.salesData.get(vals.strVal(doc)) ;
		return salesData!=null ? salesData.getSales() : 0 ;
	}
}

在 org.apache.solr.search.ValueSourceParser 中注册一下函数:

addParser("sales", new ValueSourceParser() {
        public ValueSource parse(FunctionQParser fp) throws ParseException {
          ValueSource a = fp.parseValueSource();
          return new SortSalesFunction(a);
        }
});

检索的时候加上检索排序条件 sr=sales(id)即可

转载于:https://my.oschina.net/rivues/blog/15178

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值