SOLR - повысить оценку поля с помощью функции повышения на другом поле - PullRequest
0 голосов
/ 15 января 2019

Допустим, у меня есть 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).

Я какое-то время искал решение для этого, но не смог найти его. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 16 января 2019

Вы можете использовать функцию 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 на то, что вы хотите
...