Есть ли способ использовать фасеты с гемом pg_search - PullRequest
6 голосов
/ 20 октября 2011

Я хотел бы использовать аспекты в плюс стандартного поиска. Есть ли способ заставить результаты поиска самому "искать" с помощью фасетов, используя pg_search?

Насколько я могу судить, pg_search_scope являются взаимоисключающими (есть ли обходной путь?). Спасибо!

Пример:

1) поиск в блогах по слову "test"

2) нажмите на ссылку, чтобы получить только статьи из предыдущего результата, также опубликованные в июне

1 Ответ

8 голосов
/ 22 октября 2011

Я оригинальный автор и сопровождающий pg_search.

A pg_search_scope работает так же, как и любая другая область Active Record, поэтому вы можете связать их в цепочку.

Допустим, у вас есть модель Blog с pg_search_scope с именем search_title и другой областью действия с именем in_month, которая принимает два параметра: номер месяца и номер года. Примерно так:

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

Тогда вы можете назвать это так:

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

Обратное также должно работать:

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

И решения для нумерации страниц, такие как Kaminari, также могут быть вызваны в конце.

...