我使用solr根据用户输入的搜索文本获取结果 我想根据文档卡路里字段的接近程度来订购结果,如下所示 我使用了Range(卡路里:[0到300])然而这并不能满足我的需求。
{
"food_group":"Proteins",
"carbs":"6.295",
"protein":"13.729",
"fat":"2.551",
"calories":103.0
}
例如,如果用户输入100作为卡路里,我想在文档之前用101显示文档97等等...(此处没有排序逻辑)
答案 0 :(得分:1)
您可以使用abs(sub(user_calories, calories))
功能作为排序
用户输入100的示例:
q = "calories:[0 TO 300]",
sort = "abs(sub(100,calories)) asc"
示例网址:
http://127.0.0.1:8983/solr/test/select?q=calories%3A%5B0+TO+300%5D&sort=abs(sub(100%2Ccalories))+asc