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
6
A
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.
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
3
Uno degli approcci migliori sarà utilizzare gem 'searchkick'
che utilizza elasticsearch.
Risorse per Searchkick: https://github.com/ankane/searchkick https://github.com/ankane/searchkick#advanced
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. –
Che ne dici di pg_search gem? Ne vale la pena. Perché il mio database non è troppo grande per permettermi il sole. –
@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