Champ recherche sur texte avec sphinx


#1

Bonjour,

j’ai installé Rails 2.3.4 sur Mas OS X (Snow leopard) avec MAMP pour
mysql.
Tout marche bien.

J’ai installé Sphinx en téléchargeant la source Sphinx 0.9.9-rc2
puis thinking-sphinx-1.3.14.

J’ai une objet ticket qui a une clé étrangère status_id.

J’ai modifié mes fichiers comme ceci:

model:

class Ticket < ActiveRecord::Base
belongs_to :status

define_index do
indexes [name, firstname], :as => :name, :sortable => true

end

end

controller:

def index

@tickets = Ticket.search params[:search]

end

En mode console, une commande comme Ticket.search “xxx” fonctionne
bien et me retourne mes résultats.

En démarrant le serveur en local, j’ai ce message

=> Booting Mongrel
=> Rails 2.3.4 application starting on http://0.0.0.0:3000

Sphinx cannot be found on your system. You may need to configure the
following
settings in your config/sphinx.yml file:

  • bin_path
  • searchd_binary_name
  • indexer_binary_name

For more information, read the documentation:
http://freelancing-god.github.com/ts/en/advanced_config.html

J’ai tenté de créer le fichier sphinx.yml et d’y indiquer le chemin de
sphinx:

bin_path: “/Users/julien/Downloads/sphinx-0.9.9-rc2”

mais toujours le même message.

Sinon, je me demande que dois-je mettre dans la vue pour permettre une
recherche en full text ( comment lier ma vue et mon model).

Merci beaucoup


#2

Sinon, un simple chanp recherche me convient à court terme. Comment
faire par exemple une recherche sur un attribut de mon model?

Merci beaucoup.


#3

Je ne sais pas trop comment vérifier l’accessibilité de l’index…


#4

Bonjour,

Disclamer: je n’ai pas eu l’occasion d’installer un Sphinx, juste de
l’utiliser.

Vérifie que tu es bien dans le même environnement en console et lorsque
tu
testes. Vérifie aussi que ton index est bien accessible de la même
manière
pour les deux environnements.

Ça doit juste être un problème de typo.

2010/1/25 trankh removed_email_address@domain.invalid


#5

2010/1/26 trankh removed_email_address@domain.invalid:

Sinon, un simple chanp recherche me convient à court terme. Comment
faire par exemple une recherche sur un attribut de mon model?

Cette partie est assez simple en sql ‘pur’ :

class Ticket < ActiveRecord::Base
named_scope :search_by_name, lambda {|name| {:conditions => [“name
LIKE ?”, “%#{name}%”]} unless name.blank?}}
end

Ticket.search_by_name ‘bob’

Tu peux aussi remplacer LIKE par ILIKE si ta base de données le supporte.


http://fabien.jakimowicz.com


#6

Hello,

sur la même ligne de commande que lorsque tu lances ton mongrel en
local, peux tu voir ce que retourne les commandes suivantes ?

which searchd
which indexer

En dév tu devrais avoir ces deux programmes dans ton PATH pour faire
simple. A défaut tu peux mettre dans ton sphinx.yml (si tu as compilé
sphinx à cet endroit):

development:
bin_path: “/Users/julien/Downloads/sphinx-0.9.9-rc2/src”

Il faudra également modifier ce fichier pour paramétrer ta production
(avec une section production:).

A propos de sphinx:

Thibaut

http://www.learnivore.com


#7

2010/1/25 trankh removed_email_address@domain.invalid:

end
end
following

bin_path: “/Users/julien/Downloads/sphinx-0.9.9-rc2”

mais toujours le même message.

Ca ressembles à un problème de path ou d’environnement. As-tu bien
relancé ton serveur rails après installation de sphinx ? Comment lance
tu ta console et le serveur rails ?

Pour ton installation de librairies / soft supplémentaires sur ton mac
os, je te recommande chaudement macports. Ca te libère autant que
possible des problèmes de path et de maintenance.

Sinon, je me demande que dois-je mettre dans la vue pour permettre une
recherche en full text ( comment lier ma vue et mon model).

Que veux-tu dire ?

Tu peux utiliser le match_mode pour préciser comment doit être fait le
match (:any, :all, :boolean, :extended et le fameux :extended2 …),
regarde un peu la doc pour obtenir le résultat que tu souhaites :
http://freelancing-god.github.com/ts/en/searching.html#matchmodes


http://fabien.jakimowicz.com