`
mozhenghua
  • 浏览: 324428 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用valueSource定义排序Score

 
阅读更多

  当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

    SCORE 模式定义 SCORE 模式是一种自我改变和沟通技巧,由帝尔兹(Dilts)和艾博斯坦(Epstein)在 1987 年发展出来的。该模式旨在收集、创造改变所需的适景资讯,通过五个方面的分析:症状(Symptom)、原因(Cause...

    score_static.rar_Score!_score_排序算法

    _score_排序算法"表明这个项目或代码示例主要涉及对学生分数的排序,使用了某种排序算法。描述中提到,数据存储在两个数组中,一个用于存储学生的分数,另一个用于存储学生姓名。排序后,结果将按照分数的降序输出。...

    Score Analysis程序代码

    For this assignment, we will read score and name of the department of students in some school from a text-file &#40;specified by a command line parameter&#41; and send output to console. Your program ...

    mnist inception score实例

    标题中的“mnist inception score实例”指的是在MNIST数据集上应用Inception Score这一评估指标的实践案例。MNIST是一个广泛使用的手写数字识别数据集,包含60,000个训练样本和10,000个测试样本。Inception Score...

    score.csv (score.csv)

    load data local inpath '/export/servers/hivedatas/score.csv' into table score2 partition(year='2018',

    Mysql利用group by分组排序

    利用上面的特点,可以利用mysql实现一种独特的排序; 首先先按某个字段进行order by,然后把有顺序的表进行分组,这样每组的成员都是有顺序的,而mysql默认取得分组的第一行。从而得到每组的最值。 select id, (@...

    matlab fisher score,用于特征选择的方法.zip

    4. **排序和选择特征**:计算出所有特征的Fisher Score后,根据得分对特征进行排序,选择得分最高的前k个特征作为最终的特征子集。这个过程可能需要通过交叉验证来确定最佳的k值。 5. **评估和应用**:使用选定的...

    X'pert highscore plus 2.0.rar

    《X'pert HighScore Plus 2.0:深入探索XRD分析软件的奥秘》 在现代材料科学领域,X射线衍射(XRD)...通过熟练掌握安装方法、PDF卡片导入等操作,用户可以在探索微观世界的过程中,更好地解读和利用X射线衍射数据。

    inception-score_is评价指标_gan生成图片_inceptionscore_Score!_

    IS利用了Inception模型在生成图像上的分类概率分布来度量图像的质量。如果Inception模型对生成图像的分类概率分布接近单一类别的分布,那么IS分数会较低,表示生成的图像可能过于模糊或不真实。相反,如果概率分布...

    F-score.zip_F-score_F-score 实现_f-score matlab_f_score_music29c

    F-score matlab 源代码 对F-score进行计算 运行环境 Matlab

    Go-kube-score是一个对Kubernetes对象定义进行静态代码分析的工具

    Go-kube-score是针对Kubernetes对象定义的一个强大工具,它专注于静态代码分析,旨在帮助开发者提高其Kubernetes应用的安全性和灵活性。这个工具基于Go语言开发,体现了Go在系统工具开发上的高效和易用性。在"其它...

    c-shiyanbaogao.rar_Score!_chengjipaixu_排序

    编写一程序,统计学生的成绩信息(保存在文件Score.dat中...2. 代码的总体结构已在文件Score.c中给出,并定义了一些函数头,但有关函数体代码和一些主程序处理代码要求学生填写,也可以修改函数头; 编译score.c即可

    2022更新2000-2022上市公司财务风险-破产风险 Z-score O-score

    企业破产风险 (包括Z-score O-score指数) Z-score O- score 2.参考文献: 伊志宏,刘鑫魁.资本市场开放与企业财务风险:防范化解 还是推波助澜[J].经济理论与经济管理,2023,43(02):31-45. 何 康,项后军,方显仓等....

    Z-Score 计算 - MetaTrader 4程序库.zip

    Z-Score的定义是每个观测值与数据集平均值的差除以标准差。公式为: \[ Z = \frac{(X - \mu)}{\sigma} \] 其中: - \( X \) 是观测值, - \( \mu \) 是数据集的平均值, - \( \sigma \) 是数据集的标准差。 Z-...

    score.rar_Score!_score

    标题中的"score.rar_Score!_score"暗示了这是一个与评分或得分相关的程序,可能涉及到某种算法或系统,用于评估图像匹配的准确性。"Score!"可能是这个程序的名称或者一个关键功能标识,它可能用于庆祝成功匹配或者...

    solr实现电商自定义打分

    在电商领域,搜索结果的排序和打分对于用户体验至关重要,因为它直接影响到商品的展示顺序,进而影响到销售。本篇文章将详细介绍如何利用Solr实现电商自定义打分机制。 首先,我们需要了解Solr的评分(Score)机制...

    Jquery.Score 2.0评分插件

    **jQuery.Score 2.0评分插件详解** `jQuery.Score 2.0`是一个功能强大的JavaScript库,专门用于实现交互式评分系统。它基于流行的jQuery框架构建,为网页中的评分功能提供了一种简单且可定制的解决方案。这个插件...

    Jquery.Score评分插件(基于Jquery.1.2.6或以上版本).

    **jQuery.Score评分插件**是一种基于JavaScript库jQuery的交互式评分解决方案。该插件设计用于在网站上实现用户对各种内容进行评分的功能,如产品评价、电影评分等。要理解和使用这个插件,首先需要对jQuery有一定的...

    从DDPM到score-based generative models再到Consistency Models的介绍

    在逆向过程中,DDPM利用贝叶斯法则和均值、方差的计算,来逐步减小噪声,最终生成与训练数据相似的新样本。 Score-based Generative Models是另一种基于随机微分方程(SDE)的生成模型。这些模型的核心在于score...

    score文件学生信息文件

    《学生成绩管理系统中的“score”文件解析》 在信息技术领域,数据管理是核心环节之...通过对这些数据的深度挖掘和利用,我们可以更好地理解学生的学习状况,优化教育资源配置,提升教学质量,推动教育信息化的发展。

Global site tag (gtag.js) - Google Analytics