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/