2015-03-11 20 views
6

Tôi có ứng dụng đường ray 4 với số kiểu và trang xem. Bố cục ứng dụng của ứng dụng của tôi chứa thanh tìm kiếm. Nhưng nó không hoạt động như bây giờ. Mục đích của thanh tìm kiếm là cho phép người dùng tìm kiếm thông qua tất cả các mô hình cho (các) từ khóa được nhập, về cơ bản làm cho nó trở thành một tìm kiếm toàn cầu. Có đá quý nào tìm kiếm toàn cầu không? Hoặc nó phải được thực hiện bằng tay thông qua các truy vấn sql? Tôi có thể xem cách triển khai tìm kiếm một mô hình cụ thể trên trang xem của nó. Nhưng tôi muốn nó tìm kiếm qua tất cả các mô hình cùng một lúc. Làm thế nào tôi nên đi về nó?Thực hiện tìm kiếm phổ quát trong đường ray 4

Trả lời

5

Tôi nghĩ rằng cách tốt nhất trong trường hợp của bạn là sử dụng ElasticSearch. Một viên ngọc tích hợp gọn gàng được cung cấp here. Các liên kết đến tài liệu được cung cấp trên trang đó.

+0

Không ngọc tạo ra một chỉ số cho mỗi mô hình? có cách nào để tạo một chỉ mục cho tất cả các mô hình không? Hoặc cách khác để bạn tìm kiếm một lần trên nhiều chỉ mục? chỉ cho tôi một liên kết là đủ tốt cho tôi. –

+0

Làm thế nào về đá quý pg_search? Nó có xứng đáng không. Bởi vì cơ sở dữ liệu của tôi không phải là quá lớn để đủ khả năng vết đen mặt trời. –

+1

@VivekTripathi tốt, nếu tìm kiếm của bạn là đơn giản, bạn có thể ofcource sử dụng 'pg_search', nhưng điều đó có nghĩa rằng bạn gặp khó khăn với DB của bạn và nó không hoàn toàn khả năng mở rộng khi ứng dụng của bạn phát triển. – Almaron

3

Sunspot là một trong những đá quý được sử dụng nhiều nhất để thêm tìm kiếm trong ứng dụng Rails.

Indexing trông như thế này:

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 

Và tìm kiếm:

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

vết đen mặt trời cho phép tìm kiếm duy nhất trên nhiều mô hình – lulalala

Các vấn đề liên quan