2008-09-06 45 views

Trả lời

19

Có một số tùy chọn có sẵn và mỗi tùy chọn có điểm mạnh và điểm yếu khác nhau. Nếu bạn muốn thêm tìm kiếm toàn văn, bạn nên thận trọng điều tra từng chút một và thử xem chúng hoạt động tốt như thế nào trong môi trường của bạn.

MySQL đã tích hợp sẵn hỗ trợ tìm kiếm toàn văn. Nó có hỗ trợ trực tuyến nghĩa là khi các bản ghi mới được thêm vào cơ sở dữ liệu, chúng sẽ tự động được lập chỉ mục và sẽ có sẵn trong các kết quả tìm kiếm. documentation có thêm chi tiết.

acts_as_tsearch cung cấp một wrapper cho các chức năng built-in tương tự cho các phiên bản gần đây của PostgreSQL

Đối với cơ sở dữ liệu khác mà bạn sẽ phải sử dụng phần mềm khác.

Lucene là nhà cung cấp dịch vụ tìm kiếm phổ biến được viết bằng Java. Bạn có thể sử dụng Lucene thông qua máy chủ tìm kiếm Solr với Rails sử dụng acts_as_solr.

Nếu bạn không muốn sử dụng Java, có một cổng Lucene với Ruby được gọi là Ferret. Hỗ trợ cho Rails được thêm bằng cách sử dụng plugin acts_as_ferret.

Xapian là một tùy chọn tốt khác và được hỗ trợ trong Rails sử dụng plugin acts_as_xapian.

Cuối cùng, lựa chọn ưu tiên của tôi là Sphinx bằng cách sử dụng plugin Ultrasphinx. Nó cực kỳ nhanh và có nhiều tùy chọn về cách lập chỉ mục và tìm kiếm cơ sở dữ liệu của bạn, nhưng không còn được duy trì tích cực nữa.

Một plugin khác cho Nhân sư là Thinking Sphinx có rất nhiều tích cực feedback. Bắt đầu sử dụng Thinking Sphinx dễ hơn một chút so với Ultrasphinx. Tôi sẽ đề nghị điều tra cả hai plugin để xác định cái nào phù hợp hơn với dự án của bạn.

6

Tôi có thể giới thiệu Nhân sư. Ryan Bates có số lượng lớn screencast khi sử dụng plugin Think Sphinx để tạo giải pháp tìm kiếm toàn văn.

1

Tôi đã biên soạn một list of the various Ruby on Rails search options in this other question. Tôi không chắc chắn làm thế nào, hoặc nếu kết hợp các câu hỏi của chúng tôi.

+0

Đó là danh sách toàn diện hơn, nhưng thiếu một số chi tiết về điểm mạnh và điểm yếu của mỗi danh mục; câu hỏi này là tốt. Những gì tôi muốn xem là một danh sách của mỗi plugin với thông tin về sức mạnh và điểm yếu của nó là gì, và liên kết đến tài liệu và hướng dẫn. – sock

1

Tùy thuộc vào cơ sở dữ liệu bạn đang sử dụng. Tôi sẽ khuyên bạn nên sử dụng Solr vì nó cung cấp rất nhiều lựa chọn tốt đẹp. Nhược điểm là bạn phải chạy một quá trình riêng biệt cho nó. Tôi đã sử dụng Ferret là tốt, nhưng thấy nó được ít ổn định trong điều khoản của đa luồng truy cập vào chỉ mục. Tôi đã không cố gắng Sphinx bởi vì nó chỉ hoạt động với MySQL và Postgres.

1

Chỉ cần lưu ý để tham khảo trong tương lai: Siêu Nhân sư không còn được duy trì nữa. Suy nghĩ nhân sư là sự thay thế của nó. Mặc dù nó thiếu một số tính năng tại thời điểm này giống như đoạn trích mà siêu nhân sư đã có, nó làm cho nó trong các tính năng khác.

1

Tôi muốn giới thiệu behavior_as_ferret vì tôi đang sử dụng nó cho dự án Scrumpad tại nơi làm việc.Việc lập chỉ mục có thể được thực hiện như một quá trình riêng biệt, đảm bảo rằng trong khi lập chỉ mục lại, chúng tôi vẫn có thể sử dụng ứng dụng của chúng tôi. Điều này có thể làm giảm thời gian chết của trang web. Ngoài ra việc tìm kiếm nhanh hơn nhiều. Bạn có thể tìm kiếm qua nhiều mô hình cùng một lúc và sắp xếp các kết quả của bạn theo các trường bạn muốn.

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