Как стать автором
Обновить

Advanced Ultrasphinx: теги и фильтры

Время на прочтение 2 мин
Количество просмотров 530
На хабре уже писали о интеграции Rails с великолепной поисковой системой sphinx
Rails+Sphinx=? Часть I
Rails и Sphinx.
В этой статье постараюсь рассказать о дополнительных возможностях плагина Ultrasphinx




Шаг №1: Поиск по тегам



Выносим следующий код в модуль UltrasphinxHelpers и кладем его в «lib/ultrasphinx_helpers.rb»:
В модель прописываем:
Copy Source | Copy HTML
  1. is_indexed :fields => ['title',"body"], :include => UltrasphinxHelpers::include_tags_configuration(self)


Рассмотрим следущий пример:

Copy Source | Copy HTML
  1. class Article
  2.     belongs_to :user
  3.     is_indexed :fields => ["name","body","user_id"], :include => UltrasphinxHelpers::include_tags_configuration(self)
  4. end
  5.  
  6. Ultrasphinx::Search.new(:query=>"ruby") # будут найдены все записи которые имеют слово "ruby" в поле "name" или "body" или тег "ruby"
  7.  


Если хотим искать только по одному полю:
Copy Source | Copy HTML
  1. Ultrasphinx::Search.new(:query=>"tag:ruby") #Выдаст только объекты которые затаганы тегом "ruby"
  2. Ultrasphinx::Search.new(:query=>"name:*sphinx") #Будем искать только по имени, найдется все что содержит в имени слова с суффиксом sphinx


Шаг №2: Поиск только среди определенных записей



И на последок, случай если мы хотим искать только среди статей своих друзей:
Copy Source | Copy HTML
  1. friends_ids = current_user.friends.map(&:id) #[1,2,5,6,9,12]
  2. Ultrasphinx::Search.new(:query=>"*sphinx",:filters=>{:user_id=> friends_ids})


_________
Текст подготовлен в ХабраРедакторе

Теги:
Хабы:
0
Комментарии 0
Комментарии Комментировать

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн