SOLR - 在另一个字段上使用提升函数来提升一个字段得分
SOLR - boost a field score with boost function on another field
假设我有 4 个字段:field1
、field2
、field3
和 boost1
以及一个提升函数 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
设置成任何你想要的
假设我有 4 个字段:field1
、field2
、field3
和 boost1
以及一个提升函数 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
设置成任何你想要的