2009-04-14 4 views
0

Je fais une recherche très simple sur ma base de données en utilisant acts_as_ferret. Je mets dans mon « Lieu » modèle:Est-ce que ruby ​​on rails est un plugin, acts_as_ferret, très buggé?

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

Et cela est dans mon contrôleur de l'action recherche:

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

puis 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 n'obtiens aucun résultat. J'ai certainement quelques "Venues" avec le mot "The" 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!

Répondre

2

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

Je recommande de passer à un autre plugin de recherche comme Thinking Sphinx. Vous pouvez watch the Railscast about it pour apprendre plus.

+0

D'accord - éviter les FAA. Il y a de meilleures options là-bas: ThinkingSphinx et même Solr si vous avez besoin de tout ce que Lucene fournit –

1

Je pense que le problème pourrait être que "le" est défini comme un mot d'arrêt - un mot extrêmement commun qui n'est pas indexé parce qu'il retournerait simplement chaque document. Vous pouvez configurer votre liste de mots vides.

Je considérerais l'utilisation de Solr si vous rencontrez des problèmes avec Ferret.

+0

fini avec TS mais merci pour la perspicacité! – Tony