Solr(太阳黑子)条件 order_by

Solr (Sunspot) conditional order_by

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

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

排序

我没有在文档中找到任何类似的东西,我不确定什么是实现它的好方法。

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

太阳黑子gem会让你说order_by_function to use Solr's functional ordering ability(寻找"Search by Function")。所以在我看来你可以这样做或类似的事情(未测试):

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

换句话说:找到文档的年龄(以毫秒为单位),以及 1 小时内的任何内容 "flatten" 到 0(所以它们都是并列的)。按状态排序打破平局。看起来应该可以,对吧?