当lucene默认的文本相关性排序无法满足需要时,我们需要自定义文档相关性打分,从而可以影响文档排序,此时可以使用solr的valueSource插件实现自定义打分。
solrconfig.xml 中的配置样例:
<valueSourceParser name="distScore" class="com.dfire.tis.solrextend.valuesourceparser.ShopMultiCirclesGeoDIstValueSourceParser" > <lst name="params"> <int name="firstCircle">5</int> <int name="secondCircle">10</int> <int name="thirdCircle">15</int> <str name="weightField">period_score</str> </lst> </valueSourceParser>
这个配置是的目的是为默认按照距离远近排序的方式,为不同的商圈上的商家重新赋上权重,从而影响在商圈上的商家的排序前后,比如有些商家虽然按照距离来说应该排在后面,但是由于商家服务质量好,在打分上为该商家赋上一个较高的权重,从而可以让商家排名靠前。
Valuesource代码样例:
public class ShuffleValueSourceParser extends ValueSourceParser { private int mod; private float weight; @SuppressWarnings("all") public void init(NamedList args) { NamedList namedList = ((NamedList) args.get("params")); this.mod = (int) (namedList.get("mod")); this.weight = (float) namedList.get("weight"); } @Override public ValueSource parse(FunctionQParser fp) throws SyntaxError { return new NumDocsValueSource(); } private class NumDocsValueSource extends ValueSource { private FunctionValues fcVal = new DoubleDocValues(this) { @Override public double doubleVal(int doc) { return (doc % mod) * weight; } }; @Override public FunctionValues getValues(Map context, LeafReaderContext readerContext) throws IOException { return fcVal; } public String name() { return "shuffle"; } @Override public boolean equals(Object o) { return this.getClass() == o.getClass(); } @Override public int hashCode() { return this.getClass().hashCode(); } @Override public String description() { return name() + "()"; } } }
客户端查询样例:
AND+_val_:"{!func}distScore()
另外,solr还默认提供了一些其他的valueSource实现,例如:testfunc,ord,literal等,详细请查看org.apache.solr.search.ValueSourceParser
另外:valuesource也可以用在商品的nestdoc查询上,比如sku-spu中商品是绑定在sku上的,通过QueryParser{!parent} 来过滤spu记录,需要对命中结果用sku的价格来进行排序,可以使用以下查询语法:
_val_:"abs(price)" AND _query_:"{!parent score=Max which=type:p}card_degree:[100 TO *]"
通过price字段的绝对值作为子doc的socre分来排序,score=Max的意思是一个spu有多个sku匹配时候使用最大的值来排序,也可以使用score=Min取最小的值来排序
相关推荐
SCORE模式[定义].pdf
For this assignment, we will read score and name of the department of students in some school from a text-file (specified by a command line parameter) and send output to console. Your program ...
load data local inpath '/export/servers/hivedatas/score.csv' into table score2 partition(year='2018',
利用上面的特点,可以利用mysql实现一种独特的排序; 首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@...
F-score matlab 源代码 对F-score进行计算 运行环境 Matlab
编写一程序,统计学生的成绩信息(保存在文件Score.dat中...2. 代码的总体结构已在文件Score.c中给出,并定义了一些函数头,但有关函数体代码和一些主程序处理代码要求学生填写,也可以修改函数头; 编译score.c即可
用一个数组和一个字符数组分别储存学生的分数和姓名,然后用排序算法进行排序,最后按降幂输出结果。
XRD分析软件,X'pert highscore +X'pert highscore plus 2.0的安装及pdf卡片导入方法
mnist inception score实例
score
romi1502-score-informed-source-separation
球星得分可视化,并且在球场各点进行展示,可视化处理较好
kube-score是一个对Kubernetes对象定义进行静态代码分析的工具。 输出是一个建议列表,其中包含可以改进的建议,以使您的应用程序更加安全和灵活。
资源名:matlab_fisher score_用于特征选择的方法 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有...
Jquery.Score 2.0评分插件
这是系统的其中一个重要的文件( Score.Dat )
关于High_Score软件的操作使用说明,这个软件主要是XRD 数据处理,物相分析,半定量分析,软件操作等
该程序除源程序外,还需有另外一个存放记录的文件(此程序中使用的文件名为score.txt),本程序并没有创建这个文件的功能,要首先产生这个文件,可用记事本先作一个空的文件名为score.txt 的文件。程序运行与该文件...
这个movie_score_info文件是B站的一位昵称为“末末凉凉”的美女小姐姐做电影推荐系统所缺少的一个文件,文件字段为movieId,score,times,需要的话请自行下载
衡量GAN网络的一个指标:生成图片的质量(清晰度)和多样性。