太阳黑子按多个日期字段排序

时间:2016-03-23 06:50:33

标签: solr sunspot sunspot-rails

我为我的应用程序设置了太阳黑子,其中我们有两个日期字段 字段

date_of_a
date_of_b

我希望按日期字段对记录进行排序,只按给定的顺序排列,即a > b > c ....

所以我设置我的搜索

Sunspot.search(Model) do
  order_by(:date_of_a, :desc)
  order_by(:date_of_b, :desc)
  ..
end

现在让我说我有4个文件

document 1 => date_of_a = 10/2/10
document 2 => date_of_a = 10/2/12
document 3 => date_of_b = 10/2/15
document 4 => date_of_a = 10/2/9

当我尝试搜索它时,按照以下顺序给出了记录

document 2 => date_of_a = 10/2/12
document 1 => date_of_a = 10/2/10
document 3 => date_of_b = 10/2/15  #this document doesn't have `date_of_a`
document 4 => date_of_a = 10/2/9

但这不是我想要的,我希望它按照最新日期排序,无论它是哪个日期

所以所需的结果就像

document 3 => date_of_b = 10/2/15  #this document doesn't have `date_of_a`
document 2 => date_of_a = 10/2/12
document 1 => date_of_a = 10/2/10
document 4 => date_of_a = 10/2/9

1 个答案:

答案 0 :(得分:0)

创建一个返回两个日期中最大值的方法。然后对该方法编制索引:

def latest_date
  [date_of_a, date_of_b].max
end

searchable do
  date :latest_date
end