Pertanyaan ini membutuhkan jawaban yang sangat luas untuk dijawab dalam semua aspek. Ada beberapa spesifikasi tertentu yang dapat membuat satu sistem lebih unggul dari yang lain untuk kasus penggunaan khusus, tetapi saya ingin membahas dasar-dasarnya di sini.
Saya akan membahas Solr sepenuhnya sebagai contoh untuk beberapa mesin pencari yang berfungsi kurang lebih sama.
Saya ingin memulai dengan beberapa fakta yang sulit:
-
Anda tidak dapat mengandalkan Solr/Lucene sebagai database yang aman. Ada daftar fakta mengapa tetapi sebagian besar terdiri dari opsi pemulihan yang hilang, kurangnya transaksi asam, kemungkinan komplikasi, dll. Jika Anda memutuskan untuk menggunakan solr, Anda perlu mengisi indeks Anda dari sumber lain seperti tabel SQL. Sebenarnya solr sangat cocok untuk menyimpan dokumen yang menyertakan data dari beberapa tabel dan relasi, yang jika tidak, akan memerlukan penggabungan kompleks untuk dibangun.
-
Solr/Lucene menyediakan fungsi analisis teks / stemming / pencarian teks lengkap yang menakjubkan / fungsi ketidakjelasan. Hal-hal yang tidak dapat Anda lakukan dengan MySQL. Sebenarnya pencarian teks lengkap di MySql terbatas pada MyIsam dan penilaiannya sangat sepele dan terbatas. Membobot bidang, meningkatkan dokumen pada metrik tertentu, menilai hasil berdasarkan kedekatan frasa, mencocokkan akurasi, dll. adalah pekerjaan yang sangat sulit hingga hampir mustahil.
-
Di Solr/Lucene Anda memiliki dokumen. Anda tidak dapat benar-benar menyimpan relasi dan proses. Anda tentu saja dapat mengindeks kunci dokumen lain di dalam bidang multinilai dari beberapa dokumen sehingga dengan cara ini Anda benar-benar dapat menyimpan relasi 1:n dan melakukannya dengan dua cara untuk mendapatkan n:n, tetapi datanya di atas kepala. Jangan salah paham, ini sangat bagus dan efisien untuk banyak tujuan (misalnya untuk beberapa katalog produk di mana Anda ingin menyimpan distributor untuk produk dan Anda hanya ingin mencari suku cadang yang tersedia di distributor tertentu atau semacamnya). Tetapi Anda mencapai akhir kemungkinan dengan HAS / HAS NOT. Anda hampir tidak dapat melakukan sesuatu seperti "dapatkan semua produk yang tersedia setidaknya 3 distributor".
-
Solr/Lucene memiliki fitur facetting yang sangat bagus dan analisis pencarian pos. Sebagai contoh:Setelah pencarian yang sangat luas yang memiliki 40000 klik, Anda dapat menampilkan bahwa Anda hanya akan mendapatkan 3 klik jika Anda mempersempit pencarian Anda dengan kombinasi memiliki bidang ini nilai ini dan bidang itu nilai itu. Hal-hal yang memerlukan kueri tambahan di MySQL dilakukan secara efisien dan mudah.
Jadi, mari kita simpulkan
-
Kekuatan Lucene adalah pencarian/analisis teks. Ini juga sangat cepat karena struktur indeks terbalik. Anda benar-benar dapat melakukan banyak pemrosesan pos dan memenuhi kebutuhan lainnya. Meskipun berorientasi pada dokumen dan tidak memiliki "permintaan grafik" seperti yang dilakukan oleh tiga toko dengan SPARQL, hubungan dasar N:M dapat disimpan dan dikueri. Jika aplikasi Anda berfokus pada pencarian teks, Anda harus menggunakan Solr/Lucene jika Anda tidak memiliki alasan yang baik, seperti kueri filter rentang multi-dimensi yang sangat kompleks, untuk melakukan sebaliknya.
-
Jika Anda tidak memiliki pencarian teks melainkan sesuatu di mana Anda dapat mengarahkan dan mengklik sesuatu tetapi tidak memasukkan teks, database relasional lama yang baik mungkin merupakan cara yang lebih baik.