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 к тому, что вы хотите
Другие вопросы по тегам