Esiste un modo semplice per combinare i risultati di più ricerche di Sfida di pensiero in un unico risultato? Tutte queste ricerche sono sullo stesso modello, ma le ricerche hanno termini di ricerca distinti. Quello che sto cercando di fare è combinare i risultati in modo che possano essere tutti ordinati per una colonna della data e ricevere un'adeguata paginazione.Combinare i risultati di più query di Sphinx di pensiero in un singolo risultato impaginato
Dire che ho una classe di pensatori e una classe di idee.
class Thinker < ActiveRecord::Base
has_many :ideas
end
class Idea < ActiveRecord::Base
belongs_to :thinker
define_index do
indexes text
has created_at
end
end
E dire che ho due pensatori, Bob e Alice. Voglio combinare le seguenti ricerche:
bob.ideas.search 'pancakes', :order => :created_at, :sort_mode => :desc
alice.ideas.search 'waffles', :order => :created_at, :sort_mode => :desc
... e in qualche modo li combinano in modo che la raccolta di (cialde) idee (pancake) di Bob e Alice di sono mescolati insieme, in ordine di discesa created_at, e correttamente impaginato da Sfinge pensante. Nel caso di utilizzo effettivo, potrei avere ovunque tra 2 e 15 ricerche da combinare in questo modo.
So che il metodo di ricerca restituisce una matrice ThinkingSphinx :: Search <. Ho pensato di unire manualmente questi oggetti insieme, ma il fatto che sto cercando sia l'ordinamento che l'impaginazione rendono tutto un po 'complicato.
C'è un modo elegante per farlo in Thinking Sphinx o non mi manca niente e devo praticamente girare il mio?
Grande suggestione, ma questa query avrebbe trovato anche trovare idee di Bob che contengono 'cialde', e le idee di Alice che contengono 'pancakes' . Voglio solo che il termine di ricerca "pancake" si applichi alle idee di Bob e alle "cialde" alle idee di Alice. –