Solr(太阳黑子)条件order_by

时间:2017-05-15 10:50:38

标签: ruby-on-rails solr sunspot-rails

我在我的Rails应用程序中使用Solr sunspot gem。我现在拥有的:order_by(:some_time, :desc)。我需要做的是:

如果:some time列值在最后一小时内,那么具有此条件的所有记录都按:status列排序,否则由:some_time

排序

我在文档中找不到任何类似内容,我不确定实现它的好方法。

PS:我在solr搜索完成后尝试进行分组和排序,但它看起来很重,我相信事情应该是一致的,所以如果有机会用solr做,我想去做。

1 个答案:

答案 0 :(得分:0)

太阳黑子宝石会让你说order_by_function使用Solr的functional ordering ability(寻找"按功能搜索")。因此,我认为你可以做到这一点或类似的事情(未经测试):

order_by_function(:map, [:ms, [:NOW, :some_date], '0', '3600000', '0'], :status)

换句话说:找到文档的年龄(以毫秒为单位),以及1小时内的任何内容"展平"为0(所以他们都绑在一起)。通过按状态排序来打破联系。看起来应该有用,对吗?