我在Solr 4上工作,根据存储在Index中的流行度等级来优化我的solr结果排名.
现在当有人搜索时,除了相关性排名之外,我想使用人气排名来影响相关性排名.最简单的公式可能是:
new relavancy rank = score * popularityrank
我一直在寻找在http://wiki.apache.org/solr/FunctionQuery#product处的Solr函数查询来实现相同,但是我不知道如何让它工作.我没有得到如何使用产品功能得分.试图完成它,我总是得到错误,因为字段没有定义.
现在我可以使用How to boost fields in 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提供的_val_钩子.
例如,要按分数* popularrank排序,请尝试使用此选项
http://solr:8983/solr/select?q=hp%20laptop&_val_="product(score,popularityrank)"