Josh Tate
Josh Tate

Reputation: 23

Working with Thinking Sphinx and dates

I'm building an app that has posts with expiration dates, and using Thinking Sphinx as the search tool.

Basically, what I'm looking for is a way when doing the search, to filter out all the posts that are expired

So basically apply this

@posts = Post.where('expiration > ?', DateTime.now)

to this

@posts = Post.search(params[:search])

Here's my index file

ThinkingSphinx::Index.define :post, :with => :active_record do
    indexes :title
    indexes :duties
    indexes :experience
    has employer_id, expiration, created_at
end

Upvotes: 1

Views: 479

Answers (1)

pat
pat

Reputation: 16226

It's easiest to replace less-than/greater-than logic with ranges... and in this case, a range plus an exclusive (rather than inclusive) filter should do the trick:

@posts = Post.search params[:search], :without => {:expiration => 0..Time.zone.now.to_i}

Sphinx stores times as UNIX timestamps, hence it's possible to use integers in the filter.

Upvotes: 2

Related Questions