文档章节

Solr使用函数排序

R3商业智能
 R3商业智能
发布于 2011/04/05 23:37
字数 191
阅读 1633
收藏 3

电子商务搜索引擎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)即可

© 著作权归作者所有

R3商业智能

R3商业智能

粉丝 152
博文 7
码字总数 8580
作品 3
海淀
私信 提问
加载中

评论(2)

liangtalangniao
liangtalangniao
很好,正准备使用solr做全文检索功能。
不知道IK分词的吗?还是使用什么做分词?
R3商业智能
R3商业智能 博主
package org.rivu.solr;

public class SalesData {
  private String id ;
  private int sales ;
  private int display ;
  public SalesData(String id , int sales , int display){
    this.id = id ;
    this.sales = sales ;
    this.display = display ;
  }
  public String getId() {
    return id;
  }
  public void setId(String id) {
    this.id = id;
  }
  public int getSales() {
    return sales;
  }
  public void setSales(int sales) {
    this.sales = sales;
  }
  public int getDisplay() {
    return display;
  }
  public void setDisplay(int display) {
    this.display = display;
  }
}
Solr使用函数排序

电子商务搜索引擎http://demo.rivues.com:195中有一个功能是按照销售量排序,销售量的数据是实时统计的,检索的时候有一个功能是按照销售量来排序,这个功能用到了Solr的函数排序(Sort By F...

R3商业智能
2011/04/05
4.7K
2
Solr搜索的排序打分规则探讨

http://www.colorfuldays.org/program/solr/solredismaxboost/ 使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情。Solr本身的排序打分规则是继承自...

zmf
2014/11/14
0
0
搜索引擎(Solr-搜索详解)

学习目标 1.掌握SOLR的搜索工作流程; 2.掌握solr搜索的表示语法及查询解析器 3.熟悉solr搜索的JSON格式 API Solr搜索流程介绍 回顾,使用 lucene进行搜索的步骤: Solr搜索的工作流程 查看内...

这很耳东先生
02/27
0
0
使用 Apache Lucene 和 Solr 进行位置感知搜索

简介: 不管是通过支持 GPS 的智能手机查找最近的咖啡馆,还是通过社交站点查找附近的朋友,或是查看特定城市中运输某种商品的所有货车,越来越多的人和企业都使用位置感知的搜索服务。创建位...

小编辑
2010/02/26
2.7K
2
Solr高亮与Field权重

Solr高亮 原理 做搜索时,高亮是很常见的需求,那么Solr肯定也为高亮提供了支持。先解释下Solr高亮的原理,在我们设置了需要高亮显示的Field之后,查询得到的返回结果会多出来下面的内容: ...

Zero零_度
2015/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

IPv4如何转换为IPv6?

导读 ipv6已经逐渐在应用,现在已经有很多的运营商支持ipv6,前天我们也发布了如何让电脑使用ipv6地址?有很多朋友在问?ipv6有什么作用,它的表示方式是什么,今天我们来一起来详细了解下ipv...

问题终结者
28分钟前
3
0
SpringBoot2.0高级案例(05):整合 Swagger2 ,构建接口管理界面

一、Swagger2简介 1、Swagger2优点 整合到Spring Boot中,构建强大RESTful API文档。省去接口文档管理工作,修改代码,自动更新,Swagger2也提供了强大的页面测试功能来调试RESTful API。 2、...

知了一笑
40分钟前
5
0
关于观察者模式总结

观察者模式(发布订阅模式):在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象都会收到通知,并自动更新。 使用场景:当一个对象状态改变同时需要改变其他对象,且...

cherryboy
46分钟前
1
0
Gradle Sync太慢?你需要使用阿里云仓库服务的代理仓库地址代替jcenter()、maven

在天朝使用jcenter、mavenCentral及google三个远程仓库,Gradle Sync会很慢,goole仓库甚至需要科学上网才能访问。为了加快Gradle Sync速度,一招教你优先用 阿里云仓库服务 的仓库作为下载源...

丁佳辉
58分钟前
3
0
maven打包后运行提示“没有主清单属性”的解决办法

在项目的pom.xml文件里添加如下内容: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>m......

shatian
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部