lucene学习之自定义评分

来源:互联网 发布:mmd极乐净土镜头数据 编辑:程序博客网 时间:2024/05/22 14:52

想要根据城市来自定义评分,原来的输出:

根据【你好.我是jack】 一共找到3文件

编号:0 分数: 1.0 id: 1 city: 北京
编号:1 分数: 1.0 id: 2 city: 南京

编号:2 分数: 1.0 id: 3 city: 上海


自己新建的query对象:

public class MyFieldScoreQuery extends CustomScoreQuery{


public MyFieldScoreQuery(Query subQuery) {
super(subQuery);
}


@Override
protected CustomScoreProvider getCustomScoreProvider(LeafReaderContext context){
return new MyCustomScoreProvider(context);

}

}


覆盖customscoreprovider:

public class MyCustomScoreProvider extends CustomScoreProvider{

public MyCustomScoreProvider(LeafReaderContext context) {
super(context);

}
@Override
public  float customScore(int doc, float subQueryScore, float valSrcScore) throws IOException {
IndexReader r = context.reader();
Document d = r.document(doc);
float score = subQueryScore;
if("上海".equals(d.get(“city”))){
score = score*100;
}
return score;
}
}


然后输出如下:

根据【你好.我是jack】 一共找到3文件
编号:2 分数: 100.0 id: 3 city: 上海
编号:0 分数: 1.0 id: 1 city: 北京
编号:1 分数: 1.0 id: 2 city: 南京

0 0
原创粉丝点击