Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perbandingan mesin pencari teks lengkap - Lucene, Sphinx, Postgresql, MySQL?

Senang melihat seseorang menimpali tentang Lucene - karena saya tidak tahu tentang itu.

Sphinx, di sisi lain, saya tahu cukup baik, jadi mari kita lihat apakah saya bisa membantu.

  • Peringkat relevansi hasil adalah default. Anda dapat mengatur penyortiran Anda sendiri jika diinginkan, dan memberikan bobot yang lebih tinggi pada bidang tertentu.
  • Kecepatan pengindeksan sangat cepat, karena berbicara langsung ke database. Kelambatan apa pun akan datang dari kueri SQL yang kompleks dan kunci asing yang tidak diindeks dan masalah serupa lainnya. Saya juga tidak pernah melihat adanya kelambatan dalam pencarian.
  • Saya seorang pria Rails, jadi saya tidak tahu betapa mudahnya mengimplementasikan dengan Django. Ada API Python yang disertakan dengan sumber Sphinx.
  • Daemon layanan pencarian (searchd) cukup rendah dalam penggunaan memori - dan Anda dapat menetapkan batas pada berapa banyak memori proses pengindeks juga menggunakan.
  • Skalabilitas adalah di mana pengetahuan saya lebih samar - tetapi cukup mudah untuk menyalin file indeks ke beberapa mesin dan menjalankan beberapa daemon yang dicari. Kesan umum yang saya dapatkan dari orang lain adalah bahwa itu sangat bagus di bawah beban tinggi, jadi penskalaan di beberapa mesin bukanlah sesuatu yang perlu ditangani.
  • Tidak ada dukungan untuk 'apa maksudmu', dll - meskipun ini dapat dilakukan dengan alat lain dengan cukup mudah. Sphinx melakukan stem kata meskipun menggunakan kamus, jadi 'mengemudi' dan 'mengemudi' (misalnya) akan dianggap sama dalam penelusuran.
  • Sphinx tidak mengizinkan pembaruan indeks parsial untuk data lapangan. Pendekatan umum untuk ini adalah mempertahankan indeks delta dengan semua perubahan terbaru, dan mengindeks ulang ini setelah setiap perubahan (dan hasil baru itu muncul dalam satu atau dua detik). Karena jumlah data yang kecil, ini bisa memakan waktu beberapa detik. Anda masih perlu mengindeks ulang dataset utama secara teratur (walaupun seberapa sering tergantung pada volatilitas data Anda - setiap hari? setiap jam?). Namun, kecepatan pengindeksan yang cepat membuat semua ini tidak terlalu menyakitkan.

Saya tidak tahu seberapa berlaku untuk situasi Anda ini, tetapi Evan Weaver membandingkan beberapa opsi pencarian Rails yang umum (Sphinx, Ferret (port Lucene untuk Ruby) dan Solr), menjalankan beberapa benchmark. Mungkin berguna, saya rasa.

Saya belum menyelami kedalaman pencarian teks lengkap MySQL, tetapi saya tahu itu tidak bersaing dalam hal kecepatan atau fitur dengan Sphinx, Lucene atau 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. Bagaimana cara Memeriksa apakah Tombol Radio Dicentang atau Dipilih di jQuery?

  2. Bagaimana cara mendapatkan hanya Digit dari String di mysql?

  3. kesalahan:'Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock' (2)' -- Tidak ada /var/run/mysqld/mysqld.sock

  4. Hitung jumlah nilai unik

  5. Di MySQL, dapatkah saya menyalin satu baris untuk dimasukkan ke dalam tabel yang sama?