Ruby on Rails plug-in, acts_as_ferret, très buggy?
-
09-09-2019 - |
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!
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.