2009-04-14 7 views
0

Ich mache eine sehr einfache Suche auf meinem DB mit acts_as_ferret. Ich habe dies in meinem "Venue" Modell:Ist Ruby auf Schienen Plugin, Acts_as_ferret, sehr fehlerhaft?

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

Und das ist in meiner Controller Suchaktion:

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

und dann ich mache nur die Ergebnisse.

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

Wenn ich laufe einen schnellen Test:

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

ich in meinem Log sehen, dass die richtige Abfrage "The ~" auf dem Index ausgeführt wird. Ich bekomme jedoch keine Ergebnisse. Ich habe definitiv ein paar "Venues" mit dem Wort "The" im Namensfeld.

Da es sich um eine sehr einfache Suche und acts_as_ferret ziemlich viel verwendet wird, ich den Index versucht, den Wiederaufbau zu sehen, ob es beschädigt wurde .... keine Würfel

Irgendwelche Ideen?

Danke!

Antwort

2

Ja, Ferret ist sehr bekannt für korrumpierende Indizes.

Ich empfehle, zu einem anderen Suchplugin wie Thinking Sphinx umzuschalten. Sie können watch the Railscast about it um mehr zu erfahren.

+0

Einverstanden - AAF vermeiden. Es gibt bessere Möglichkeiten da draußen: ThinkingSphinx und sogar Solr, wenn du alles brauchst, was Lucene bietet –

1

Ich denke, das Problem könnte sein, dass "das" als Stoppwort definiert ist - ein extrem häufiges Wort, das nicht indexiert wird, weil es nur jedes Dokument zurückgeben würde. Sie können Ihre Stoppwortliste konfigurieren.

Ich würde Solr verwenden, wenn Sie Probleme mit Ferret haben.

+0

endete mit TS, aber danke für den Einblick! – Tony