我在Solr 4上工作,根据存储在Index中的人气排名来优化我的solr结果排名。
现在当有人搜索时,除了相关性排名之外,我想使用人气排名来影响相关性排名。最简单的公式可能是:
新的相关性等级=得分* popularrank
我一直在http://wiki.apache.org/solr/FunctionQuery#product查看Solr函数查询以达到相同的效果,但我不知道如何让它工作。我没有得到如何使用产品功能得分。试图完成它,我总是得到错误,因为字段没有定义。
现在我可以使用此处定义的boost How to boost fields in solr,但我还有其他逻辑/要求,我想使用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,但我无法找到如何做到这一点。
任何帮助都是高度适用的。
答案 0 :(得分:1)
您可以尝试使用Solr提供的_val_
挂钩。
例如,要按score * popularityrank
排序,请尝试使用此
http://solr:8983/solr/select?q=hp%20laptop&_val_="product(score,popularityrank)"
答案 1 :(得分:0)
使用query()函数来获取'score'的值。
因此,如果您正在尝试此操作: new_score =得分*受欢迎程度,请使用以下格式。
q = searchterm& sort = product(查询($ q),受欢迎程度) desc
query($ q) - 返回查询的TF-IDF分数。所以这相当于使用'得分'字段。