Solr - 通过接近数字来订购结果

时间:2017-04-22 13:23:29

标签: search solr lucene

我使用solr根据用户输入的搜索文本获取结果 我想根据文档卡路里字段的接近程度来订购结果,如下所示 我使用了Range(卡路里:[0到300])然而这并不能满足我的需求。

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

例如,如果用户输入100作为卡路里,我想在文档之前用101显示文档97等等...(此处没有排序逻辑)

1 个答案:

答案 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