Solr - 排序和查询的相对提升

时间:2017-04-22 16:30:36

标签: search solr lucene

我的文档结构如下 -

{
  "food_group":"Proteins",
  "carbs":"6.295",
  "protein":"13.729",
  "fat":"2.551",
  "calories":103.0
}

目的是按照用户在查询中喜欢的food_group的提升确定的顺序获取文档,以及提高用户偏好的卡路里。

基于food_group的提升实现如下 -

(
food_group:"Proteins"^boost1  OR
food_group:"Dairy"^boost2  OR
food_group:"Grains"^boost3 
)

然而,当我添加abs(sub(preffered_calories,calories)) asc来计算卡路里与用户的preffered_calories之间的关系时,基于food_group的提升会丢失

1 个答案:

答案 0 :(得分:1)

尝试使用提升功能

bf=div(1,abs(sub(100,calories)))
defType=edismax
q=(food_group:"Proteins"^100 OR food_group:"Dairy" OR food_group:"Grains")

来源:https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser#TheDisMaxQueryParser-Thebf(BoostFunctions)Parameter