使用SOLR如何为一组整数首选项返回最佳结果

时间:2013-08-28 19:21:30

标签: solr

我正在尝试创建一个返回最佳产品的查询,具体取决于一些必需的属性和一些仅影响权重的可选属性。

需要属性1-3

属性4-5可选

评级1-3可选

数据在solr db中结构如下:

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

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

我到目前为止创建的查询让我很接近,但它没有考虑可选字段与特定请求值的接近程度。

一个例子是对于诸如效率或有用性之类的任意属性,评级值为1-5。我需要它来承认,如果用户希望rating1设置为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 个答案:

答案 0 :(得分:1)

由于你有对评级进行数学计算的规则,我会选择function query。你可以做任何你认为在这种情况下效果最好的数学,结果可能会影响提升分数。