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