Installer Sphinx
Exécutez simplement les trois commandes suivantes sur votre serveur ou machine de développement pour installer Sphinx :
./configure make sudo make install
Cela configurera Sphinx par défaut pour une utilisation avec MySQL. Si vous souhaitez l'utiliser avec PostgreSQL, exécutez configurer
avec le drapeau suivant :
./configure --with-pgsql
Remarque : vous pouvez télécharger le sphinx depuis //sphinxsearch.com/downloads//
Installer Thinking Sphinx
Même s'il y a quelques Sphinx dans Application Rails, j'ai choisi d'opter pour Thinking Sphinx, car il semble être le plus populaire et le plus complet en termes de fonctionnalités. Vous pouvez donc l'installer en tant que plugin Rails en utilisant installation de script/plugin
commande:
installation de script/plugin git://github.com/freelancing-god/thinking-sphinx.git
Écrire du code pour utiliser la recherche sphinx :
We now need to index our models. This consists of adding a few small lines of code into each model that you want to be able to search. So lets say we have a Blog app (doesn’t everyone!), which has a Post model. And that Post model contains the usual titre
et description
des champs. Nous ajoutons donc le morceau de code suivant sous nos déclarations d'association dans
app/models/post.rb
:
Defin_index fait le titre des index, fin de la description
Ces trois lignes très courtes indiqueront à Thinking Sphinx d'indexer le titre
et description
domaines de la Poste
model, and allow us to search through all our posts. Now we just need to index and start Sphinx. And Thinking Sphinx makes this very easy with it’s handy Rake tasks.
Exécutez simplement ceci :
rake ts: reconstruire
Cela s'arrêtera (s'il est démarré), indexera et démarrera Sphinx pour vous. Nous devons maintenant créer un formulaire de recherche rapide. Il s’agira à terme d’une recherche globale sur site, et pas seulement d’une recherche de publication. Nous allons donc créer un nouveau contrôleur :
recherche de contrôleur de script/génération
Créez ensuite une vue sur app/views/search/index.html.erb
et placez-y le formulaire :
Maintenant, dans votre nouveau contrôleur de recherche, créez un nouveau créer
action:
def créer @posts = Post.search params[:search] fin
Crée ton créer
voir à app/views/search/create.html.erb
avec un peu de code pour afficher votre @des postes
de la manière habituelle.
Note:
Nous pouvons même paginer nos résultats en utilisant le plugin WillPaginate :
créer par défaut
@posts = Post.search params[:search], :page => params[:page], :per_page => 10 fin