2013-08-28 3 views
0

Я пытаюсь создать запрос, который возвращает лучший продукт в зависимости от нескольких обязательных атрибутов и нескольких необязательных, которые влияют только на весовые.Использование SOLR как вернуть лучший результат для набора целочисленных предпочтений

Свойства 1-3 требуется

Свойства 4-5 необязательных

рейтинги

1-3 опциональный

Данные структурированы в Solr дб так:

property1 (string) 
property2 (string) 
property3 (string) 
property4 (string) 
property5 (string) 

rating1 (int) 
rating2 (int) 
rating3 (int) 

В запрос, который я создал до сих пор, закрыл меня, но он не учитывает, насколько закрыты необязательные поля для конкретного запрашиваемого значения.

Примером являются оценки, оцененные 1-5 для любых свойств, таких как эффективность или полезность. Мне нужно, чтобы он признал, что если пользователь хочет, чтобы рейтинг1 был установлен в 4, значения 3 и 5 все еще действительны, как раз и меньше. Также значение 2 взвешивается больше, чем 1. Таким образом, он в основном создает шкалу, основанную на том, как далеко продукт находится от желаемого значения рейтинга.

defType = dismax 
sort = score desc 
fl = entity_id,score,property4,property5,rating1,rating2,rating3 
fq = property1:215 property2:45 property3:17 
bq = property4:(H)^5 OR property5:(87)^5 OR rating1:(1)^5 OR rating2:(3)^5 OR rating3:(5)^5 

ответ

1

Поскольку у вас есть правила делать математику на рейтинг, я бы с function query. Вы могли бы сделать любую математику, которая, по вашему мнению, будет работать лучше всего в этом случае, и результат может повлиять на оценку форсирования.