Solr按相关性排序

时间:2013-10-14 11:16:02

标签: solr

我无法通过某些领域了解Solr Sorting, 假设我有这样的文件集:

 {"id": 126,
 "post": "Hello, welcomes you :)",
 "date": "2011-08-12T18:52:36Z",
 "user": "Ahmed",
 "user_photo": "t_4944949.jpeg",
 "likes": 1,
 "comments": 0}

我只想用^ 2的优先级(喜欢,评论)和优先级为^ 1的日期来排序。

写的那个sentax是什么? 注意:q=*:*

由于

2 个答案:

答案 0 :(得分:0)

这是语法:

sort=<field name>+<direction>[,<field name>+<direction>]

所以你需要:

sort=date desc, sum(likes, comment) desc

排序顺序是列表顺序,请查看此处的示例:http://wiki.apache.org/solr/CommonQueryParameters#sort

inStock desc, price asc    //sort by "inStock" descending, then "price" ascending

答案 1 :(得分:0)

看起来你想给你的文件分数

2 * (likes + comments) + recency_score

recency_score取决于date)并按此分数对结果进行排序。

您应该查看function query

recency_score取决于您的需求。有关如何按新近度提升文档的信息,请参阅此Solr FAQ

例如,您可能希望现在发布的文档得分为1.0,去年发布的文档得分为(1/2),两年前发布的文档得分为(1/3),依此类推。以下查询将为您执行此操作:

q={!func}sum(product(2,sum(likes,comment)),recip(ms(NOW,date),3.16e-11,1,1))

其中3.16e-11仅为1 /(一年内的毫秒数)。