В настоящее время я использую рельсы 3.1, sphinx и интеллектуальный сфинкс для своего поискового приложения.
В моей модели есть два поля, которые я определяю как атрибуты sphinx:
define_index do
has availability_period # number of days
has availability_date
end
Я хочувыполнить поиск по этой дате доступности, поэтому я использую область сфинкса, определенную следующим образом:
# search by date e.g av_date = '01. Feb 2012'
# find items that are availabile for that date
sphinx_scope(:by_date){ |av_date|
search_date = (Time.now-2.years)..av_date
{
:with => { :availability_date => search_date}
}
}
Тем не менее, элемент имеет доступный_период в днях, поэтому я хочу добавить количество запросов в днях.
Итак, давайте предположим что-то вроде этого:
item 1: {availability_date: '10. Jan 2012', availability_period: 14}
item 2: {availability_date: '10. Feb 2012', availability_period: 30}
Теперь я ищу предметы между '01.Январь 2011 г. - «30 февраля 2012 г.»}, я хочу найти только элемент № 1, а не элемент № 2, потому что 10. 10 февраля + 30 дней дают 10 марта, что выходит за рамки моего диапазона.