Memilih server pencarian teks lengkap yang berdiri sendiri: Sphinx atau SOLR? [Tutup]

192

Saya mencari server pencarian teks lengkap yang berdiri sendiri dengan properti berikut:

  • Harus beroperasi sebagai server yang berdiri sendiri yang dapat melayani permintaan pencarian dari banyak klien
  • Harus dapat melakukan "pengindeksan massal" dengan mengindeks hasil dari permintaan SQL: ucapkan "SELECT id, text_to_index FROM dokumen;"
  • Harus perangkat lunak gratis dan harus dijalankan di Linux dengan MySQL sebagai databasenya
  • Harus cepat (mengesampingkan pencarian teks lengkap internal MySQL)

Alternatif yang saya temukan yang memiliki properti ini adalah:

  • Solr (berdasarkan Lucene)
  • ElasticSearch (juga berdasarkan pada Lucene)
  • Sphinx

Pertanyaan saya:

  • Bagaimana mereka membandingkan?
  • Apakah saya melewatkan alternatif lain?
  • Saya tahu bahwa setiap kasus penggunaan berbeda, tetapi apakah ada kasus tertentu di mana saya pasti tidak ingin menggunakan paket tertentu?
Knorv
sumber
1
Apakah Anda mengesampingkan menggunakan Lucene langsung? Solr adalah layanan di atas lucene, jadi Lucene yang lurus bisa jadi kemungkinan.
Dave
Apakah Lucene memiliki mode server yang berdiri sendiri? Saya pikir itu adalah salah satu hal yang ditambahkan SOLR? Saya belum mengesampingkan apa pun - jadi jangan ragu untuk mengadvokasi Lucene jika itu adalah pilihan terbaik yang diberikan persyaratan :-)
knorv
mausch: Terutama Jawa tetapi juga bahasa lainnya.
knorv
Secara pribadi saya suka Sphinx. Namun, selama proyek "besar" baru-baru ini, kandidat rilis terbaru (0.9.9-rc2) telah menunjukkan bug stopper ketika menggunakan array multi-nilai (MVA). Itu akan hasil acak! Jadi kami pindah ke SOLR untuk menyiasati ini. Setelah SOLR aktif dan menjalankan kinerja baik-baik saja, dan tanpa bug show stopper.
pchap10k
2
Sudahkah Anda melihat elasticsearch.com?
FYA

Jawaban:

327

Saya telah menggunakan Solr dengan sukses selama hampir 2 tahun sekarang, dan belum pernah menggunakan Sphinx, jadi saya jelas bias. Namun, saya akan mencoba untuk tetap objektif dengan mengutip dokumen atau orang lain. Saya juga akan menerima tambalan untuk jawaban saya :-)

Kesamaan:

  • Baik Solr dan Sphinx memenuhi semua kebutuhan Anda. Mereka cepat dan dirancang untuk mengindeks dan mencari data dalam jumlah besar secara efisien.
  • Keduanya memiliki daftar panjang situs lalu lintas tinggi yang menggunakannya ( Solr , Sphinx )
  • Keduanya menawarkan dukungan komersial. ( Solr , Sphinx )
  • Keduanya menawarkan binding API klien untuk beberapa platform / bahasa ( Sphinx , Solr )
  • Keduanya dapat didistribusikan untuk meningkatkan kecepatan dan kapasitas ( Sphinx , Solr )

Berikut ini beberapa perbedaan:

Pertanyaan-pertanyaan Terkait:

Mauricio Scheffer
sumber
4
Berbicara tentang pengembang yang berkomitmen untuk Solr dan Lucene, tampaknya mereka telah menggabungkan kedua produk tersebut sehingga pengembangan lebih mudah dan lebih cepat - lucidimagination.com/blog/2010/03/26/… .
jimmystormig
3
@Stann: bagaimana bisa begitu? Saya telah menggunakan Solr selama hampir 5 tahun yang lalu dan tidak pernah perlu menulis satu baris pun Java.
Mauricio Scheffer
@MauricioScheffer Apakah Anda benar-benar berpikir bahwa kode java akan lebih cepat daripada C ++. Inilah perbandingan yang dibuat oleh Bill Karwin dan Sphinx ada pertanyaan 10 kali lebih cepat dari lucene (dan solr harus lebih lambat daripada). Slideshare.net/billkarwin/…
Stann
3
@Stann: apakah Anda benar-benar berpikir Anda perlu kinerja lebih dari whitehouse.gov, Netflix, The Guardian, digg, hanya untuk menyebutkan beberapa situs web menggunakan Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer
3
Berikut ini jawaban Sphinx yang merupakan pasangan yang baik untuk jawaban ini di Solr
New Alexandria
48

Kecuali Anda perlu memperluas fungsionalitas pencarian dengan cara apa pun yang berpemilik, Sphinx adalah taruhan terbaik Anda.

Keuntungan Sphinx:

  1. Pengembangan dan pengaturan lebih cepat
  2. Agregasi yang jauh lebih baik (dan lebih cepat). Ini adalah fitur pembunuh bagi kami.
  3. Bukan XML. Inilah yang akhirnya mengesampingkan Solr bagi kita. Kami harus mengembalikan set hasil yang agak besar (pikirkan ratusan hasil) dan kemudian agregat sendiri karena agregasi Solr kurang. Jumlah waktu untuk membuat serial ke dan dari XML benar-benar mematikan kinerja. Untuk set hasil kecil, itu baik-baik saja.
  4. Dokumentasi terbaik yang pernah saya lihat di aplikasi sumber terbuka

Keuntungan solr:

  1. Dapat diperpanjang.
  2. Dapat menekan langsung dari aplikasi web, yaitu, Anda dapat memiliki pencarian seperti autocomplete memukul server Solr langsung melalui AJAX.
larf311
sumber
29
Solr memiliki banyak penulis respons selain xml, termasuk JSON, PHP, Ruby, Python, dan format biner java: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer
24
Apakah saya menyebutkan betapa buruknya dokumentasi Solr / Lucene? Harus me-root Javadocs untuk mengetahui fungsionalitas bukan ide dokumentasi saya.
larf311
3
Saya seharusnya menautkan ke wiki: wiki.apache.org/solr/…
Mauricio Scheffer
2
Saya menghabiskan sepanjang hari memperbaiki beberapa bug instalasi sphinx 0.9.9 di mac saya. Sejauh ini masih belum berfungsi. Itu sangat buggy. Saya menggunakan cara yang disarankan. Saya memberi benar-benar frustasi ...
lkahtz
dokumentasi solr tidak sebagus sphinx. tapi komunitasnya besar. Dan saya selalu bisa mengetahui semuanya dengan membaca kode sumber solr.
Tyler Long
21

Catatan: Ada banyak pengguna dengan pertanyaan yang sama.

Jadi, untuk menjawab intinya:

Yang mana dan mengapa?

  • Gunakan Solr jika Anda bermaksud menggunakannya di aplikasi web Anda (mesin pencari situs contoh). Ini pasti akan menjadi hebat, berkat API-nya. Anda pasti akan membutuhkan kekuatan itu untuk aplikasi web.

  • Gunakan Sphinx jika Anda ingin mencari melalui banyak dokumen / file dengan sangat cepat. Itu indeks sangat cepat juga. Saya akan merekomendasikan untuk tidak menggunakannya dalam aplikasi yang melibatkan JSON atau parsing XML untuk mendapatkan hasil pencarian. Gunakan untuk pencarian dB langsung. Ini berfungsi dengan baik di MySQL.

Alternatif

Meskipun ini adalah raksasa, ada banyak lagi. Juga, ada yang menggunakan ini untuk memperkuat kerangka kerja kustom mereka. Jadi, saya akan mengatakan bahwa Anda benar-benar tidak ketinggalan. Meskipun ada satu elasticsearch yang memiliki basis pengguna yang baik.

Augiwan
sumber
13
saat canggung ketika saya membaca jawaban ini setelah satu setengah tahun dan klik upvote dan melihat bahwa saya menulis jawaban ini sendiri. lol. : DA tambahan kecil untuk ini: Setelah 18 bulan, elasticsearch telah menjadi alternatif yang bagus dan juga memiliki komunitas yang layak. Keren, bonsai keren!
Augiwan
Augustus! Saat canggung itu: D. Jadi untuk aplikasi web python menurut Anda apa yang terbaik sekarang? Solr atau pencarian elastis berdasarkan kinerja, penggunaan memori dan kemudahan untuk mengatur ide?
Mevin Babu
Tidak masalah bahasa apa aplikasi web ditulis. Pilih berdasarkan pada kasus penggunaan Anda!
Augiwan
19

Saya telah menggunakan Sphinx selama hampir satu tahun sekarang, dan itu luar biasa. Saya dapat mengindeks 1,5 juta dokumen dalam waktu sekitar satu menit di MacBook saya, dan bahkan lebih cepat di server. Saya juga menggunakan Sphinx untuk membatasi pencarian ke tempat-tempat dalam garis lintang & bujur tertentu, dan ini sangat cepat. Juga, bagaimana peringkat hasil sangat tweaker. Mudah dipasang & disetel, jika Anda membaca satu atau dua tutorial. Hampir berstatus 1.0, tetapi Kandidat Rilis mereka telah solid.

lo_fye
sumber
3
Pencarian geografis dapat dilakukan di Solr dengan plugin LocalSolr
Mauricio Scheffer
1
Anda dapat INDEKS 1,5 juta dokumen dalam satu menit? Saya bahkan tidak bisa mendekati MEMBACA yang banyak - langsung dari 7zip (tidak menulis, keluaran ke konsol) file di SSD saya! Dan ini 2017! Dokumen macam apa ini? Itu luar biasa. Catatan: Saya harap Anda tidak bermaksud mencari indeks 1,5 juta dalam satu menit. Pencarian indeks dengan 1,5 juta dokumen masih akan kembali dalam hitungan detik (bahkan pada 2009).
FastAl
2

Lucene / Solr tampaknya lebih menonjol dan dengan tahun-tahun yang lebih panjang dalam bisnis dan komunitas pengguna yang jauh lebih kuat. imho jika Anda dapat melewati masalah pengaturan awal karena beberapa tampaknya telah menghadapi (bukan kita) maka saya akan mengatakan Lucene / Solr adalah taruhan terbaik Anda.

Chakraborty Angsuman
sumber
Komunitas pengguna adalah poin penting. Ada beberapa orang yang SANGAT, SANGAT membantu di forum Sphinx, tetapi tidak ada komunitas yang kuat.
mlissner