Да, это легко возможно, просто убедитесь, что вы указали время в своих индексах:
class Widget < ActiveRecord::Base
define_index do
indexes title
has publish_at
has unpublish_at
...
end
Чтобы получить его на основе чисто дат, требуется небольшое количество хитрости из-за сфинкса, требующего ограниченного диапазона (x..y в отличие от x> = y). Использование значения min / max очень не элегантно, но в настоящий момент я не знаю, как с этим справиться.
min_time = Time.now.advance(:years => -10)
max_time = Time.now.advance(:years => 10)
title = "foo"
Widget.search title, :with => {:publish_at => min_time..Time.now, :unpublish_at => Time.now..max_time}