Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to use facets with the pg_search gem

I'd like to use facets in plus of standard search. Is there a way to make search results be itself "searched" with facets using pg_search?

As far as I can tell, pg_search_scope are mutually exclusive (is there a workaround?). Thanks!

Example:

1) search blogs with word "test"

2) click link to get only articles from previous result that were also posted in june

like image 931
montrealmike Avatar asked Oct 20 '11 15:10

montrealmike


1 Answers

I'm the original author and maintainer of pg_search.

A pg_search_scope works like any other Active Record scope, so you can chain them.

So let's say you have a model Blog with a pg_search_scope named search_title and another scope named in_month that takes two parameters, a month number and a year number. Something like this:

class Blog < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search_title, :against => :title
  scope :in_month, lambda { |month_number, year_number| 
    where(:month => month_number, :year => year_number)
  }
end

Then you can call it like this:

Blog.search_title("broccoli").in_month(6, 2011)

The reverse should also work:

Blog.in_month(6, 2011).search_title("broccoli")

And pagination solutions like Kaminari could also be called on the end.

like image 161
Grant Hutchins Avatar answered Oct 31 '22 19:10

Grant Hutchins