SOLR - повысить оценку поля с помощью функции повышения на другом поле
Допустим, у меня есть 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)
Солр жалуется, что он недействителен и возвращает 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 ответ
Вы можете использовать query
function и другие функции 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
к тому, что вы хотите