2015-03-11 12 views
6

Mam aplikację 4 szyn z liczbą modeli i widokami stron. Układ aplikacji mojej aplikacji zawiera pasek wyszukiwania. Ale teraz jest nieaktywny. Celem paska wyszukiwania jest umożliwienie użytkownikowi przeszukiwania wszystkich modeli dla wprowadzonego słowa kluczowego, co powoduje, że jest to wyszukiwanie globalne. Czy jest jakiś klejnot, który dokonuje powszechnego wyszukiwania? Czy trzeba to zrobić ręcznie za pomocą zapytań sql? Mogłem zobaczyć sposób wdrożenia wyszukiwania określonego modelu na jego stronie widoku. Ale chcę, żeby przeszukała wszystkie modele naraz. Jak powinienem to zrobić?Implementacja wyszukiwania uniwersalnego w szynach 4

Odpowiedz

5

Myślę, że najlepszym sposobem, w twoim przypadku jest użycie ElasticSearch. Czysty klejnot integracji jest dostępny pod numerem here. Linki do dokumentacji znajdują się na tej stronie.

+0

Nie gem utworzyć indeks za model? czy istnieje sposób na stworzenie jednego indeksu dla wszystkich modeli? lub alternatywnie jak przeszukujesz raz na wielu indeksach? wskazanie mi linku jest dla mnie wystarczająco dobre. –

+0

Co powiesz na gem pg_search? Czy to jest wystarczająco warte. Ponieważ moja baza danych nie jest zbyt duża, by pozwolić sobie na plamę słoneczną. –

+1

@VivekTripathi cóż, jeśli twoje wyszukiwanie jest tak proste, możesz skorzystać z 'pg_search', ale oznacza to, że utknąłeś w DB i nie jest on skalowalny, gdy twoja aplikacja się rozwija. – Almaron

3

Sunspot to jeden z najczęściej używanych klejnotów do dodawania wyszukiwania w aplikacji Rails.

indeksowania wygląda następująco:

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 

i wyszukiwanie:

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 umożliwia pojedynczy wyszukiwania w wielu modelach – lulalala

Powiązane problemy