PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Adakah alasan untuk tidak menggunakan pencarian teks lengkap bawaan PostgreSQL di Heroku?

Edit, 2016 — Mengapa tidak keduanya?

Jika Anda tertarik dengan Postgres vs. Lucene, mengapa tidak keduanya? Lihat ZomboDB ekstensi untuk Postgres, yang mengintegrasikan Elasticsearch sebagai tipe indeks kelas satu. Masih proyek yang cukup awal tetapi terlihat sangat menjanjikan bagi saya.

(Secara teknis tidak tersedia di Heroku, tetapi masih layak untuk dilihat.)

Pengungkapan:Saya salah satu pendiri Websolr dan Bonsai Pengaya Heroku, jadi perspektif saya agak bias terhadap Lucene.

Bacaan saya tentang pencarian teks lengkap Postgres adalah cukup solid untuk kasus penggunaan langsung, tetapi ada sejumlah alasan mengapa Lucene (dan dengan demikian Solr dan ElasticSearch) lebih unggul baik dari segi kinerja maupun fungsionalitas.

Sebagai permulaan, jpountz memberikan jawaban teknis yang sangat bagus untuk pertanyaan itu, Mengapa Solr jauh lebih cepat daripada Postgres? Perlu beberapa kali membaca untuk benar-benar mencernanya.

Saya juga mengomentari episode RailsCast terbaru membandingkan keuntungan dan kerugian relatif dari pencarian teks lengkap Postgres versus Solr. Biarkan saya rekap itu di sini:

Keuntungan pragmatis untuk Postgres

  • Gunakan kembali layanan yang sudah ada yang sudah Anda jalankan alih-alih menyiapkan dan memelihara (atau membayar) sesuatu yang lain.
  • Jauh lebih unggul dari SQL yang sangat lambat LIKE operator.
  • Lebih mudah menjaga sinkronisasi data karena semuanya ada dalam database yang sama — tidak ada integrasi tingkat aplikasi dengan beberapa API layanan data eksternal.

Kelebihan Solr (atau ElasticSearch)

Dari atas kepalaku, tanpa urutan tertentu…

  • Skalakan pengindeksan dan beban penelusuran Anda secara terpisah dari beban basis data reguler Anda.
  • Analisis istilah yang lebih fleksibel untuk hal-hal seperti normalisasi aksen, stemming linguistik, N-gram, penghapusan markup… Fitur keren lainnya seperti pemeriksaan ejaan, ekstraksi "konten kaya" (mis., PDF dan Word)…
  • Solr/Lucene dapat melakukan segalanya di Daftar TODO pencarian teks lengkap pascagres baik-baik saja.
  • Peringkat relevansi istilah yang jauh lebih baik dan lebih cepat, dapat disesuaikan secara efisien pada waktu penelusuran.
  • Performa penelusuran yang mungkin lebih cepat untuk istilah umum atau kueri rumit.
  • Mungkin kinerja pengindeksan lebih efisien daripada Postgres.
  • Toleransi yang lebih baik untuk perubahan dalam model data Anda dengan memisahkan pengindeksan dari penyimpanan data utama Anda

Jelas saya pikir mesin pencari khusus berdasarkan Lucene adalah pilihan yang lebih baik di sini. Pada dasarnya, Anda dapat menganggap Lucene sebagai gudang keahlian pencarian sumber terbuka de facto.

Tetapi jika satu-satunya pilihan Anda yang lain adalah LIKE operator, maka pencarian teks lengkap Postgres adalah kemenangan yang pasti.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aplikasi untuk memantau kueri PostgreSQL secara real time?

  2. Mengalikan dua kolom yang telah dihitung pada pernyataan CASE

  3. Pencarian Teks Lengkap PostgreSQL dan Kebingungan Trigram

  4. Mengotomatiskan Barman dengan Wayang:it2ndq/barman (bagian satu)

  5. Tuple to List - Python / PostgreSQL mengembalikan tipe SETOF Record