我正在用DataImportHandler从mysql数据库中加载Solr数据。每个文档都包含一个popularity字段(int类型),该字段是从另一个应用程序中计算出来并保存到mysql中的(该字段基于与应用程序域相关的一些规则)。
如何使用此值来提高solr的排名?和 solr score的popularity值正确吗?如何在这里使用高炉?
发布于 2019-01-08 12:10:54
一个很好的起点可能会起作用,就是把分数乘以一个次线性函数,这个函数会随着流行程度的增加(慢慢地)增加。例如,
newScore = score * log(1 + 0.5 * popularity)要应用这个提升,您应该使用Solr的EDisMax查询解析器并使用以下值传递boost参数:
&boost=log(sum(1, product(0.5, popularity)))这个领域的名字是受欢迎的。您不需要使用bf参数,因为您应该使用乘法助推,而不是加性助推。
添加1的原因是为了处理popularity=0 (因此,如果每个文档的流行度总是至少为1,则不需要添加1)。通过将0.5因子改变为其他值,可以增加或降低流行效应的强度。例如,可以使用因子2来增加效果:
newScore = score * log(1 + 2 * popularity)9 / m可能有一个很好的因素,m应该是您所期望的中位受欢迎度,因为在这种情况下,“中位数文档”(在其受欢迎程度等于m的意义上)的提升将是1(也就是说,它的得分根本不会提高)。
再次,这只是一个起点,你将不得不尝试不同的促进功能,直到你找到一个表现良好的功能。
https://stackoverflow.com/questions/54089600
复制相似问题