SOLR-通过增强功能在另一个场上增强场得分

时间:2019-01-14 21:53:29

标签: boost solr solr6

比方说,我有4个字段:field1field2field3boost1和提升函数f。我想获得一个看起来像field1_score+field2_score*f(boost1)+field3_score*f(boost1)的得分q=field1:value1 OR (field2:value2 OR field3:value3)^f(boost1),但是Solr抱怨它无效,并返回了Lexical error

当前的solr查询如下:defType=edismax&q=field1:value1 OR field2:value2 OR field3:value3&boost=f(boost1)。但是通过这种方式,boost部分中的值也会对field1:value1的分数产生影响,使其等于field1_score*f(boost1)+field2_score*f(boost1)+field3_score*f(boost1)

我已经四处寻找解决方法,但是没有找到解决方法。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

您可以使用query函数和其他Solr函数来创建所需的任何自定义评分。

例如,您可以这样做:

q=*:*
bf=sum(query($q1),mul(query($q2),${boost1}),mul(query($q3),${boost1}))
q1=field1:value1
q2=field2:value2
q3=field3:value3
boost1=5
  • 当然,您应该将boost1设置为所需的任何值