比方说,我有4个字段:field1
,field2
,field3
和boost1
和提升函数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)
。
我已经四处寻找解决方法,但是没有找到解决方法。任何帮助表示赞赏!
答案 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
设置为所需的任何值