我的文档的结构为以下 -
{
"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(preferred_calories,calories)) asc
的那一刻以将卡路里接近到用户的preferred_calories的距离,基于food_group的提升就会丢失
尝试使用boost函数
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 query parser#thedismaxsquerparser-thebf(boostfunctions(参数