Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I add the condition "IS NOT NULL" to a Thinking Sphinx search

I'm using Thinking Sphinx for full-text search, following this video.

I'd like to do the following:

@articles = Article.search(params[:search], :conditions => "published_at IS NOT NULL", :order => :created_at)

The problem is that this doesn't work. It seems that the search method only accepts conditions that are a hash. I've tried a couple of ways, but I am clueless as to how I can represent "published_at IS NOT NULL" as a hash...

like image 319
Chris Gaunt Avatar asked Nov 03 '08 11:11

Chris Gaunt


1 Answers

Was given the solution over at Railscasts

If you want *all* results for that model to filter out records where published_at IS NULL, add 'where "published_at IS NOT NULL"' to your define_index block.

If it's only sometimes, add published_at as an attribute, and then sphinx should store null dates as 0's, so you can filter using :without => {:published_at => 0}

The second solution was what I needed.

like image 156
Chris Gaunt Avatar answered Oct 23 '22 17:10

Chris Gaunt