使用函数查询提高Solr中的分数

使用函数查询提高Solr中的分数,solr,lucene,full-text-search,solrnet,solr4,Solr,Lucene,Full Text Search,Solrnet,Solr4,我在SOLR4上工作,根据索引中存储的受欢迎程度排名优化我的Solr结果排名 现在当有人搜索时,除了相关性排名,我想用流行度排名来影响相关性排名。最简单的公式可以是: 新关系等级=分数*人口等级 我一直在研究Solr函数查询,以实现相同的功能,但是,我不知道如何让它工作。我不知道如何使用乘积函数将分数相乘。为了完成这项工作,我总是得到错误,因为字段未定义 现在我可以使用这里定义的boost,但我还有其他逻辑/需求,我想使用Solr提供的函数查询 例如,我尝试了下面的简单查询,它似乎是有效的 ht

我在SOLR4上工作,根据索引中存储的受欢迎程度排名优化我的Solr结果排名

现在当有人搜索时,除了相关性排名,我想用流行度排名来影响相关性排名。最简单的公式可以是:

新关系等级=分数*人口等级

我一直在研究Solr函数查询,以实现相同的功能,但是,我不知道如何让它工作。我不知道如何使用乘积函数将分数相乘。为了完成这项工作,我总是得到错误,因为字段未定义

现在我可以使用这里定义的boost,但我还有其他逻辑/需求,我想使用Solr提供的函数查询

例如,我尝试了下面的简单查询,它似乎是有效的

http://solr:8983/solr/select?q=hp%20laptop&defType=edismax&fl=Id,Name,score&bf=product%28$v1,$v2%29&v1=Id&v2=2
现在,对于我的实际需求,我想把分数作为$v2,但是我无法找到如何做到这一点


非常感谢您的帮助

您可以尝试使用Solr提供的
\u val\u
钩子

例如,要按
score*popularityrank
排序,请尝试使用

http://solr:8983/solr/select?q=hp%20laptop&_val_="product(score,popularityrank)"
使用query()函数获取“score”的值

因此,如果您正在尝试这样做:new_score=score*popularity,请使用以下格式

q=searchterm&sort=product(查询($q),流行度)desc


查询($q)-返回查询的TF-IDF分数。因此,这相当于使用“分数”字段。

谢谢您的回答。我们将尝试此解决方案。可能重复的