Есть ли способ использовать фасеты с гемом pg_search

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

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

Пример:

1) поиск по блогам со словом "тест"

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


person montrealmike    schedule 20.10.2011    source источник


Ответы (1)


Я являюсь первоначальным автором и сопровождающим pg_search.

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, также могут быть вызваны в конце.

person Grant Hutchins    schedule 22.10.2011