2015-03-11 22 views
6

Ho un'applicazione di binari 4 con numero di modelli e pagine di visualizzazione. Il layout dell'applicazione della mia applicazione contiene una barra di ricerca. Ma è inattivo al momento. Lo scopo della barra di ricerca è quello di consentire all'utente di cercare tra tutti i modelli per la/e parola/e chiave/e inserita/e, fondamentalmente rendendola una ricerca globale. C'è qualche gemma che fa ricerca universale? O deve essere fatto manualmente tramite query SQL? Ho potuto vedere il modo di implementare la ricerca di un modello specifico sulla sua pagina di visualizzazione. Ma voglio che cerchi tutti i modelli contemporaneamente. Come dovrei farlo?Implementazione della ricerca universale su binari 4

risposta

5

Penso che il modo migliore nel tuo caso è quello di utilizzare elasticsearch. Una perfetta gemma di integrazione è fornita here. I collegamenti alla documentazione sono forniti su quella pagina.

+0

Non la gemma creare un indice per ogni modello? c'è un modo per creare un indice per tutti i modelli? o in alternativa come si cerca una volta su più indici? indicarmi un link è abbastanza buono per me. –

+0

Che ne dici di pg_search gem? Ne vale la pena. Perché il mio database non è troppo grande per permettermi il sole. –

+1

@VivekTripathi bene, se la tua ricerca è così semplice, potresti utilizzare "pg_search", ma ciò significa che rimani bloccato sul tuo DB e non è abbastanza scalabile quando la tua app cresce. – Almaron

3

Sunspot è una delle gemme più utilizzate per aggiungere la ricerca in un'app Rails.

indicizzazione si presenta così:

class Post < ActiveRecord::Base 
    searchable do 
    text :title, :body 
    text :comments do 
     comments.map { |comment| comment.body } 
    end 
    integer :blog_id 
    integer :author_id 
    integer :category_ids, :multiple => true 
    time :published_at 
    string :sort_title do 
     title.downcase.gsub(/^(an?|the)\b/, '') 
    end 
    end 
end 

e la ricerca:

Post.search do 
    fulltext 'best pizza' 
    with :blog_id, 1 
    with(:published_at).less_than Time.now 
    order_by :published_at, :desc 
    paginate :page => 2, :per_page => 15 
    facet :category_ids, :author_id 
end 
+1

Sunspot permette un'unica ricerca su più modelli – lulalala