我无法通过某些领域了解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=*:*
由于
答案 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 /(一年内的毫秒数)。