Un jour, une gem

26/04/2012

Jeudi c'est Sunspot

gem install sunspot_rails

Aujourd’hui c’est Coolspot… Sunspot :)

Aujourd’hui je m’excuse pour ce jeu de mot foireux mais le fallait. Sinon plus sérieusement, aujourd’hui je vous présente toute la puissance de Solr avec la beauté de Ruby en utilisant un DSL bien fichu.

Un petit exemple, on modifie le model comme ceci :

class Post < ActiveRecord::Base
  searchable do
    text :title, :body
    text :comments do
      comments.map { |comment| comment.body }
    end
    integer :blog_id
    integer :author_id
    integer :category_ids, :multiple => true
    time :published_at
    string :sort_title do
      title.downcase.gsub(/^(an?|the)\b/, '')
    end
  end
end

Et on effectue des recherches :

Post.search do
  fulltext 'best pizza'
  with :blog_id, 1
  with(:published_at).less_than Time.now
  order_by :published_at, :desc
  paginate :page => 2, :per_page => 15
  facet :category_ids, :author_id
end

Si vous avez installé la gem sunspot_solr vous pouvez lancer une instance de serveur Solr comme ceci :

bundle exec rake sunspot:solr:start

Pour le reste je vous laisse éplucher la documentation :)

Le lien utile