IT-Expert
  IT-Expert / Веблог / Rails: ActiveSearch plugin
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2009 год
 за 2008 год
 за 2007 год
 за 2006 год
 за 2005 год
RSS лента Лента новостей IT-Expert 
Лента подкастов IT-Expert IT-Expert audiopodcasts

Rails: ActiveSearch plugin

11:32, 27 декабря 2007 ( Web Development Search Engines Ruby Rails  )

Плагин ActiveSearch просто чудо какое-то, большое человеческое спасибо julik.nl за его разработку.

Штука сия облегчает и без того легкую жизнь ;-) rails-девелопера при разработке простейшего поиска по записям базы.

Идея сего плагина такова: используя разнообразные инексаторы исходя из планируемого объема данных вырабатываем оптимальный подход к поиску по записям базы.

Например, мой сайт содержит весьма небольшой объем данных, и, как рекомендует Julik, при объеме до 500 записей целесообразно использовать простейший индексатор ActiveSearch::LikeIndexer.

Для того чтобы поиск заработал необходимо:

1. Установить плагин:

cd project

ruby script/plugin install http://julik.textdriven.com/svn/tools/rails_plugins/simple_search/ 

2. Добавить поле searchable к таблицам, по которым вы собираетесь искать. Целессобразно сделать это через миграцию:

  def self.up
    add_column("products","searchable", :text)
    add_column("categories","searchable", :text)
   
 end 

def self.down   
    remove_column("products","searchable")
    remove_column("categories","searchable")
  end

3. В моделях Product и Category добавляем указание к индексированию:

   indexes_columns :title, :short_description, :long_description

4.  запустить начальное индексирование:

консоль rais:

ruby script/console

в консоли

Products.indexers[0].rebuild!

Category.indexers[0].rebuild!

Все, теперь мы можем достаточно быстро искать по записям:


@found_categories = Category.indexers[0].query(@query)
@found_products = Product.indexers[0].query(@query)

 Можно искать и по Category.find_using_term("query"), как в документации указано, но, видимо такое использование предполагает использование сразу нескольких индексаторов.

 

Таким образом плагин может быть использован с:

1. индексом в поле searchable в каждой модели, по которой будет производиться поиск.

2. индексом в отдельной таблице

3. индексом через плагин ferret 

способы индексации расположены в порядке увеличения количества данных для поиска.

Удобно, Julik, u made my day. 


Оставить комментарий
© Nexus 2005-2009 Rambler Top100 О сервере