Sunspot : la recherche simple pour une application rubyonrails avec Solr

J'avais déjà parlé de UltraSphinx et ThinkingSphinx. Il y a mieux (enfin je trouve) : SunSpot qui utilise Solr.

Pour l'utiliser il suffit de mettre ces gems dans votre Gemfile et de faire un bundle install

Dans votre model, mettez les champs à indexer et dans une before_save réindexez le tout :

class Post < ActiveRecord::Base
  before_save :reindex
  searchable do
    text :title, :body
    #... autres champs à indexer
  end
  def reindex
    Sunspot.index self
    Sunspot.commit
  end
end

Pour faire la recherche, par exemple dans votre controleur :

# OU Post.solr_search do / Post.search do
@posts = Sunspot.search(Post) do
  fulltext(params[:query]) # params[:query] est une chaine
end.results

Il existe aussi une tâche rake pour lancer solr et pour tout réindexer : 

rake sunspot:solr:run

rake sunspot:reindex 

Personnellement je trouve ça très efficace et très rapide ! 

Documentation complémentaire : 

https://collectiveidea.com/blog/archives/2011/03/08/full-text-searching-with-solr-and-sunspot/ 

https://sunspot.github.com/