Ho installato Sphinx e Thinking-Sfinge qualche giorno fa sul mio ruby on rails 2.3.2, e la ricerca di base funziona alla grande. Questo significa, senza alcuna condizione. Ora, voglio filtrare la ricerca con alcune condizioni.Sfinge - Quando usare 'ha' e 'indici' per i campi
ho il modello di annuncio, e l'indice si presenta come segue:
define_index do
indexes title, :as => :title, :sortable => true
indexes description, :as => :description, :sortable => true
end
Forse mi sbaglio, ma ho notato che solo quando ho aggiunto la sintassi :sortable => true
a questi attributi, potrei usarli come condizioni nella mia ricerca. Altrimenti non troverà nulla.
Ora, sto anche utilizzando il plugin act_as_taggable_on, che ha generato le mie due tabelle db: tag e taggings. Non ho un modello per i tag, ho solo acts_as_taggable_on :tags, :categories
nel mio modello di annunci.
Quello che mi piacerebbe fare ora è filtrare per tag. Così, ho provato ad aggiungere al mio indice has tags(:id), :as => :tag_ids
senza fortuna, e anche a indexes tags(:id), :as => :tag_ids
ma non ha funzionato neanche.
Come posso costruire gli indici in modo da poter fare qualcosa di simile:
Announcement.search 'some word', :conditions => {:tag_ids => some_id}
E, inoltre, che è la differenza tra has
e indexes
Grazie, Brian
Grazie mille! Lo proverò. –
Non so perché, ma non funziona. Come ho detto prima, non ho un modello Tag, uso solo il plug-in act_as_taggable_on. È possibile che il problema stia causando il problema? –
Voglio dire, non ho un campo 'tag' nella tabella degli annunci. Il plugin genera due tabelle: tag e taggings. Quindi, la relazione tra annunci e tag è attraverso la tabella dei taggings. Ha qualcosa a che fare con questo? –