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(所以它们都是并列的)。按状态排序打破平局。看起来应该可以,对吧?
我在 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(所以它们都是并列的)。按状态排序打破平局。看起来应该可以,对吧?