Domanda

sto facendo una ricerca molto semplice sul mio DB usando acts_as_ferret. Ho messo questo nel mio modello "Sede":

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

E questo è nella mia azione di ricerca di controllo:

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

e poi ho appena rendo i risultati.

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

Se corro un test rapido:

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

vedo nel mio ceppo che la query corretta "Il ~" viene eseguita sull'indice. Tuttavia, ottengo alcun risultato. Io sicuramente ho un paio di "Luoghi" con la parola "The" nel campo del nome.

Poiché si tratta di una ricerca molto semplice e acts_as_ferret viene usato un bel po ', ho provato a ricostruire l'indice per vedere se è stato danneggiato .... niente da fare

Tutte le idee?

Grazie!

È stato utile?

Soluzione

Sì, Ferret è stato molto ben noto per gli indici corrompere.

Mi consiglia di passare a un altro plugin di ricerca come Thinking Sphinx . È possibile guardare il Railscast su di esso per saperne di più.

Altri suggerimenti

Credo che il problema potrebbe essere che "la" è definito come uno stopword- una parola molto comune che non è indicizzato perché sarebbe solo tornare ogni documento. È possibile configurare l'elenco stopword.

Vorrei considerare l'utilizzo di Solr se si hanno problemi con il furetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top