SOLR - 在另一个字段上使用提升函数来提升一个字段得分

SOLR - boost a field score with boost function on another field

假设我有 4 个字段:field1field2field3boost1 以及一个提升函数 f。我想获得一个看起来像 q=field1:value1 OR (field2:value2 OR field3:value3)^f(boost1) 的分数 field1_score+field2_score*f(boost1)+field3_score*f(boost1),但 Solr 抱怨它无效并且 returns 一个 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).

我已经四处寻找解决方案一段时间了,但没有找到。感谢您的帮助!

您可以使用 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设置成任何你想要的