Question

Je suis en train de faire une recherche très simple sur mon DB en utilisant acts_as_ferret. Je mets cela dans mon modèle « Lieu »:

acts_as_ferret :fields => [:name, :city]

Et cela est dans mon contrôleur action recherche:

@t = Venue.find_by_contents(params[:search]+'~')

et je rends juste les résultats.

render :text => @t.to_json, :success => true, :status => :ok

Si je lance un test rapide:

http://localhost:3000/venue/list?search=The

Je vois dans mon journal que la requête appropriée « Le ~ » est en cours d'exécution sur l'indice. Cependant, je reçois aucun résultat. J'ai certainement quelques « Lieux » avec le mot « Le » dans le champ de nom.

Puisque c'est une recherche très simple et acts_as_ferret est utilisé un peu, j'ai essayé la reconstruction de l'index pour voir si elle a été corrompu .... pas de dés

Toutes les idées?

Merci!

Était-ce utile?

La solution

Oui, Ferret a été très bien connu pour les index corruptrices.

Je recommande passage à un autre plugin de recherche comme Thinking Sphinx . Vous pouvez regarder le Railscast à son sujet afin d'en savoir plus.

Autres conseils

Je pense que le problème pourrait être que « le » est défini comme un stopword- un mot très commun qui est pas indexé car il serait tout simplement retourner tous les documents. Vous pouvez configurer votre liste de mots vides.

J'envisager d'utiliser Solr si vous rencontrez des problèmes avec Ferret.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top