Un jour, une gem

02/03/2012

Vendredi c'est Thinking Sphinx

gem install thinking-sphinx

Demande et le Sphinx trouvera

Thinking Sphinx permet de faire de la recherche full-text rapidement et proprement.

Pour l’essayer, si vous êtes sous OS X, il vous faudra installer Sphinx via Homebrew. Vous aurez aussi besoin d’un serveur MySQL ou PostgreSQL.

Une fois le tout installé, il vous faut opérer quelques modifications sur vos models pour dire à Sphinx ce qui doit être indexé :

Model

class Article < ActiveRecord::Base
  define_index do
    indexes content
  end
end

Il est aussi possible d’ajouter quelques options pour rendre un attribut triable ou pour lui donner un alias — dans le cas d’une association.

Une fois votre model prêt à l’action avec Sphinx, il vous faut l’indexer :

rake ts:index

Ensuite, lancer le serveur Sphinx :

rake ts:start

Puis pour bien faire une méthode dans notre controller :

def index
  @articles = Article.search(params[:search])
end

Avec la vue associée :

<%= form_tag articles_path, method: :get do %>
    <%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", name: nil %>
<% end %>

Les liens utiles