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