PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Có lý do gì không sử dụng tìm kiếm toàn văn tích hợp sẵn của PostgreSQL trên Heroku?

Chỉnh sửa, 2016 - Tại sao không phải cả hai?

Nếu bạn quan tâm đến Postgres và Lucene, tại sao không phải cả hai? Xem ZomboDB tiện ích mở rộng cho Postgres, tích hợp Elasticsearch như một loại chỉ mục hạng nhất. Vẫn còn là một dự án khá sớm nhưng nó có vẻ rất hứa hẹn với tôi.

(Về mặt kỹ thuật không có trên Heroku, nhưng vẫn đáng xem.)

Tiết lộ:Tôi là đồng sáng lập của Websolr Bonsai Phần bổ trợ Heroku, vì vậy quan điểm của tôi hơi thiên về Lucene.

Tôi đọc về tìm kiếm toàn văn của Postgres là nó khá chắc chắn cho các trường hợp sử dụng đơn giản, nhưng có một số lý do tại sao Lucene (và do đó Solr và ElasticSearch) vượt trội hơn cả về hiệu suất và chức năng.

Đối với người mới bắt đầu, hãy jpountz cung cấp câu trả lời kỹ thuật thực sự xuất sắc cho câu hỏi, Tại sao Solr lại nhanh hơn Postgres rất nhiều? Nó đáng để đọc qua một vài lần để thực sự hiểu rõ.

Tôi cũng đã nhận xét về tập RailsCast gần đây so sánh ưu và nhược điểm tương đối của tìm kiếm toàn văn Postgres so với Solr. Hãy để tôi tóm tắt lại điều đó ở đây:

Lợi thế thực dụng đối với Postgres

  • Sử dụng lại một dịch vụ hiện có mà bạn đang chạy thay vì thiết lập và duy trì (hoặc trả tiền cho) một thứ khác.
  • Vượt trội hơn nhiều so với LIKE của SQL cực kỳ chậm toán tử.
  • Ít rắc rối hơn khi giữ đồng bộ dữ liệu vì tất cả đều nằm trong cùng một cơ sở dữ liệu - không tích hợp cấp ứng dụng với một số API dịch vụ dữ liệu bên ngoài.

Ưu điểm của Solr (hoặc ElasticSearch)

Ngoài đầu tôi, không theo thứ tự cụ thể nào…

  • Chia tỷ lệ tải lập chỉ mục và tìm kiếm của bạn tách biệt với tải cơ sở dữ liệu thông thường của bạn.
  • Phân tích thuật ngữ linh hoạt hơn cho những thứ như chuẩn hóa trọng âm, bắt nguồn ngôn ngữ, N-gram, xóa đánh dấu… Các tính năng thú vị khác như kiểm tra chính tả, trích xuất "nội dung phong phú" (ví dụ:PDF và Word)…
  • Solr / Lucene có thể làm mọi thứ trong danh sách CÔNG VIỆC CẦN LÀM toàn văn của tìm kiếm Postgres tốt thôi.
  • Xếp hạng mức độ liên quan của cụm từ tốt hơn và nhanh hơn nhiều, có thể tùy chỉnh hiệu quả tại thời điểm tìm kiếm.
  • Hiệu suất tìm kiếm có thể nhanh hơn đối với các cụm từ phổ biến hoặc các truy vấn phức tạp.
  • Có lẽ hiệu suất lập chỉ mục hiệu quả hơn Postgres.
  • Khả năng chịu đựng tốt hơn đối với sự thay đổi trong mô hình dữ liệu của bạn bằng cách tách lập chỉ mục khỏi kho dữ liệu chính của bạn

Rõ ràng tôi nghĩ rằng một công cụ tìm kiếm chuyên dụng dựa trên Lucene là lựa chọn tốt hơn ở đây. Về cơ bản, bạn có thể coi Lucene là kho lưu trữ nguồn mở trên thực tế về chuyên môn tìm kiếm.

Nhưng nếu tùy chọn khác duy nhất của bạn là LIKE , thì tìm kiếm toàn văn Postgres là một chiến thắng chắc chắn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nguồn của lỗi 'đối số từ khóa không mong muốn' tìm nạp '' trong pandas to_sql?

  2. heroku kéo postgresql trên windows

  3. Postgresql không thành công truy vấn cụ thể MỘT lần sau khi Windows khởi động lại

  4. Postgresql Nhiều số lượng cho một bảng

  5. Sắp xếp chữ và số với PostgreSQL