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


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

Ключевые слова:
Записей в блоге
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 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. 


      Оставить комментарий
      © Максим Прокопов 2005-2016 О сервере