0

我无法理解 Solr 按某些字段排序,假设我有这样一组文档:

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

我只想按优先级为 ^2 的 sum(likes, comment) 和优先级为 ^1 的日期对它进行排序

写那个的语法是什么?笔记:q=*:*

谢谢

4

2 回答 2

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
于 2013-10-14T13:20:12.933 回答
0

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

2 * (likes + comments) + recency_score

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

您应该为此查看函数查询

recency_score取决于您的需求。请参阅此Solr 常见问题解答,了解如何按新近程度提升文档。

例如,您可能希望现在发布的文档得分为 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/(一年中的毫秒数)。

于 2013-10-14T17:27:55.110 回答