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

So sánh công cụ tìm kiếm toàn văn - Lucene, Sphinx, Postgresql, MySQL?

Thật vui khi thấy ai đó chú ý đến Lucene - bởi vì tôi không biết về điều đó.

Mặt khác, Sphinx, tôi biết khá rõ, vì vậy hãy xem tôi có thể giúp được gì không.

  • Xếp hạng mức độ liên quan của kết quả là mặc định. Bạn có thể thiết lập phân loại của riêng mình nếu bạn muốn và cung cấp cho các trường cụ thể trọng số cao hơn.
  • Tốc độ lập chỉ mục cực nhanh, vì nó nói chuyện trực tiếp với cơ sở dữ liệu. Mọi sự chậm chạp sẽ đến từ các truy vấn SQL phức tạp và các khóa ngoại chưa được lập chỉ mục và các vấn đề khác như vậy. Tôi cũng chưa bao giờ nhận thấy sự chậm chạp nào trong việc tìm kiếm.
  • Tôi là một chàng trai Rails, vì vậy tôi không biết việc triển khai với Django dễ dàng như thế nào. Tuy nhiên, có một API Python đi kèm với nguồn Sphinx.
  • Daemon của dịch vụ tìm kiếm (searchd) sử dụng bộ nhớ khá thấp - và bạn có thể đặt giới hạn trên dung lượng bộ nhớ quá trình lập chỉ mục cũng sử dụng.
  • Khả năng mở rộng là nơi kiến ​​thức của tôi còn sơ sài hơn - nhưng đủ dễ dàng để sao chép các tệp chỉ mục sang nhiều máy và chạy một số trình duyệt tìm kiếm. Ấn tượng chung mà tôi nhận được từ những người khác là nó khá tốt khi chịu tải cao, vì vậy việc mở rộng nó trên nhiều máy không phải là điều cần phải xử lý.
  • Không có hỗ trợ cho 'did-you-mean', v.v. - mặc dù những điều này có thể được thực hiện bằng các công cụ khác đủ dễ dàng. Sphinx có gốc từ mặc dù sử dụng từ điển, vì vậy "lái xe" và "lái xe" (ví dụ) sẽ được coi là giống nhau trong các tìm kiếm.
  • Sphinx không cho phép cập nhật một phần chỉ mục cho dữ liệu trường. Cách tiếp cận phổ biến là duy trì chỉ mục delta với tất cả những thay đổi gần đây và lập chỉ mục lại sau mỗi lần thay đổi (và những kết quả mới đó sẽ xuất hiện trong vòng một hoặc hai giây). Do lượng dữ liệu nhỏ, quá trình này có thể mất vài giây. Mặc dù vậy, bạn vẫn cần lập chỉ mục lại tập dữ liệu chính thường xuyên (mặc dù mức độ thường xuyên phụ thuộc vào sự biến động của dữ liệu của bạn - hàng ngày? Hàng giờ?). Tuy nhiên, tốc độ lập chỉ mục nhanh giúp cho việc này diễn ra khá dễ dàng.

Tôi không biết trường hợp này của bạn áp dụng như thế nào, nhưng Evan Weaver đã so sánh một số tùy chọn tìm kiếm Rails phổ biến (Sphinx, Ferret (một cổng Lucene cho Ruby) và Solr), chạy một số điểm chuẩn. Tôi đoán có thể hữu ích.

Tôi chưa giảm sâu tìm kiếm toàn văn của MySQL, nhưng tôi biết nó không cạnh tranh về tốc độ cũng như tính năng khôn ngoan với Sphinx, Lucene hoặc Solr.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để lập trình một trình kích hoạt MySQL để chèn hàng vào một bảng khác?

  2. Cột Đổi tên MySQL

  3. Kết nối MySQL qua đường hầm SSH - làm thế nào để chỉ định máy chủ MySQL khác?

  4. PostgreSQL GROUP BY khác với MySQL?

  5. Làm cách nào để tôi có thể sử dụng mySQL Replace () để thay thế các chuỗi trong nhiều bản ghi?