Tek başına bir tam metin arama sunucusu seçme: Sfenks veya SOLR? [kapalı]


192

Aşağıdaki özelliklere sahip tek başına bir tam metin arama sunucusu arıyorum:

  • Birden çok istemciden arama isteği sunabilen bağımsız bir sunucu olarak çalışmalıdır
  • Bir SQL sorgusunun sonucunu endeksleyerek "toplu indeksleme" yapabilmelidir: "SELECT id, text_to_index FROM belgeleri";
  • Özgür yazılım olmalı ve veritabanı olarak MySQL ile Linux üzerinde çalışmalıdır
  • Hızlı olmalı (MySQL'in dahili tam metin aramasını hariç tutar)

Bu özelliklere sahip bulduğum alternatifler:

  • Solr (Lucene tabanlı)
  • Elastik Arama (ayrıca Lucene tabanlı)
  • Sfenks

Sorularım:

  • Nasıl karşılaştırırlar?
  • Alternatifleri kaçırdım mı?
  • Her bir kullanım durumu farklı olduğunu biliyorum, ama kesinlikle olacak bazı durumlar vardır değil belli paketi kullanmak ister misin?

1
Düz Lucene kullanarak dışarı çıkardın mı? Solr lucene üstünde bir hizmettir, bu yüzden düz Lucene bir olasılık olabilir.
Dave

Lucene'in bağımsız bir sunucu modu var mı? Bunun SOLR'un eklediği şeylerden biri olduğunu düşündüm? Hiçbir şey göz ardı etmedim - bu yüzden gereksinimleri göz önüne alındığında en iyi seçim ise Lucene'yi savunmaktan çekinmeyin :-)
knorv

mausch: Temelde Java değil, diğer diller.
knorv

Şahsen ben Sfenks'i seviyorum. Bununla birlikte, son zamanlarda "büyük" bir proje sırasında, en son sürüm adayı (0.9.9-rc2), çok değerli diziler (MVA) kullanırken durdurucu hataları gösterdi. Rastgele sonuçlar olurdu! Bunun için SOLR'a geçtik. SOLR çalışmaya başladıktan sonra performans iyiydi ve şov durdurucu hatası yoktu.
pchap10k

2
Elasticsearch.com'a baktınız mı?
FYA

Yanıtlar:


327

Solr'ı neredeyse 2 yıldır başarıyla kullanıyorum ve hiç Sfenks kullanmadım, bu yüzden açık bir şekilde önyargılıyım. Ancak, dokümanları veya diğer kişileri alıntılayarak nesnel tutmaya çalışacağım. Ayrıca cevabım için yamalar alacağım :-)

benzerlikler:

  • Hem Solr hem de Sfenks tüm gereksinimlerinizi karşılar. Hızlıdırlar ve büyük veri gövdelerini verimli bir şekilde dizine eklemek ve aramak için tasarlanmıştır.
  • Her ikisinde de onları kullanan yüksek trafik alanlarının uzun bir listesi var ( Solr , Sfenks )
  • Her ikisi de ticari destek sunuyor. ( Solr , Sfenks )
  • Her ikisi de çeşitli platformlar / diller için istemci API bağlamaları sunar ( Sphinx , Solr )
  • Her ikisi de hız ve kapasiteyi artırmak için dağıtılabilir ( Sfenks , Solr )

İşte bazı farklılıklar:

İlgili sorular:


4
Hem Solr hem de Lucene için çalışan devs hakkında konuşurken, iki ürünü birleştirerek daha fazla geliştirmeyi daha kolay ve daha hızlı hale getirdikleri anlaşılıyor - lucidimagination.com/blog/2010/03/26/… .
jimmystormig

3
@Stann: nasıl yani? Solr'i yaklaşık 5 yıl önce kullandım ve hiçbir zaman tek bir Java satırı yazmaya gerek duymadım.
Mauricio Scheffer

@MauricioScheffer Gerçekten java kodunun C ++ 'dan daha hızlı olacağını düşünüyor musunuz? İşte Bill Karwin ve Sfenks tarafından yapılan karşılaştırma, şeyleri lucene'den 10 kat daha hızlı sorgular (ve solr daha da yavaş olmalı.) Slideshare.net/billkarwin/…
Stann

3
@Stann: Gerçekten Solr kullanarak birkaç web sitesini adlandırmak için whitehouse.gov, Netflix, The Guardian, digg'den daha fazla performansa ihtiyacınız olduğunu düşünüyor musunuz? wiki.apache.org/solr/PublicServers
Mauricio Scheffer

3
İşte Sfenks üzerine bir cevap, Solr'daki bu cevaba iyi bir çift
Yeni İskenderiye

48

Arama işlevini herhangi bir özel şekilde genişletmeniz gerekmedikçe, Sphinx en iyi seçimdir.

Sfenks'in avantajları:

  1. Geliştirme ve kurulum daha hızlı
  2. Çok daha iyi (ve daha hızlı) toplama. Bu bizim için katil bir özellikti.
  3. XML değil. Sonuçta Solr'u bizim için dışladı. Solr toplaması eksik olduğu için oldukça büyük sonuç kümeleri (yüzlerce sonuç düşünün) geri dönüp bunları kendimiz topladık. XML'e ve XML'den serileştirme süresi, performansı kesinlikle öldürdü. Küçük sonuç kümeleri için mükemmel bir şekilde iyiydi.
  4. Açık kaynaklı bir uygulamada gördüğüm en iyi belgeler

Solr avantajları:

  1. Uzatılabilir.
  2. Doğrudan bir web uygulamasından vurabilir, yani, otomatik tamamlama benzeri aramaların Solr sunucusuna doğrudan AJAX aracılığıyla ulaşmasını sağlayabilirsiniz.

29
Solr, JSON, PHP, Ruby, Python ve java ikili formatı dahil olmak üzere xml dışında birçok yanıt yazarına sahiptir: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer

24
Solr / Lucene belgelerinin ne kadar korkunç olduğundan bahsetmiş miydim? İşlevselliği anlamak için Javadoc'lara dayanmak zorunda kalmak benim dokümantasyon fikrim değil.
larf311

3
Wiki ile bağlantı kurmalıydım
Mauricio Scheffer

2
Bütün gün mac'umdaki Sfenks 0.9.9 kurulum hatasını düzelterek geçirdim. Şimdiye kadar hala çalışmıyor. Çok adamcağız. Ben çok önerilen yollar kullandım. Gerçekten sinir bozucu ...
lkahtz

solr'un belgeleri sfenks kadar iyi değil. ama topluluk büyük. Ve her zaman solr kaynak kodunu okuyarak her şeyi anlayabilirim.
Tyler Long

21

Not: Aynı soruyu akılda tutan birçok kullanıcı vardır.

Yani, konuya cevap vermek için:

Hangisi ve neden?

  • Web uygulamanızda (örnek site arama motoru) kullanmayı düşünüyorsanız Solr kullanın . API'sı sayesinde kesinlikle harika olacak. Bir web uygulaması için kesinlikle bu güce ihtiyacınız olacak.

  • Çok hızlı bir şekilde çok sayıda belge / dosya arasında arama yapmak istiyorsanız Sfenks'i kullanın . Çok hızlı bir şekilde indeksler. Arama sonuçlarını almak için JSON veya XML ayrıştırma içeren bir uygulamada kullanmamanızı tavsiye ederim. Doğrudan dB aramaları için kullanın. MySQL üzerinde harika çalışıyor.

Alternatifler

Bunlar devler olmasına rağmen, çok daha fazlası var. Ayrıca, bunları özel çerçevelerini güçlendirmek için kullananlar da vardır. Yani, gerçekten hiç özlemediğini söyleyebilirim. Her ne kadar iyi bir kullanıcı tabanına sahip bir elasticsearch var.


13
bu cevabı bir buçuk yıl sonra okuduğumda ve yukarı oyu tıklayıp bu cevabı kendim yazdığımı gördüğümde o garip an. lol. : DA buna küçük bir ilave: 18 ay sonra, elasticsearch harika bir alternatif oldu ve iyi bir topluluğa sahip. Harika, bonsai harika!
Augiwan

Augustus! Bu garip an: D. Peki bir python web uygulaması için şimdi en iyi ne düşünüyorsunuz? Solr veya elastik arama performans, bellek kullanımı ve kolaylık herhangi bir fikir kurmak için?
Mevin Babu

Web uygulamasının hangi dilde yazılmış olduğu önemli değildir. Kullanım durumunuza göre seçin!
Augiwan

19

Sfenks'i neredeyse bir yıldır kullanıyorum ve inanılmazdı. MacBook'umda bir dakika içinde 1,5 milyon dokümanı ve hatta sunucuda daha hızlı dizine ekleyebilirim. Ayrıca, aramaları belirli enlemler ve boylamlar içindeki yerlerle sınırlamak için Sfenks kullanıyorum ve çok hızlı. Ayrıca, sonuçların nasıl sıralandığı çok değiştirilebilir. Bir veya iki öğretici okursanız, kurulumu ve kurulumu kolaydır. Neredeyse 1.0 statüsü var, ancak Serbest Bırakma Adayları kaya gibi sağlam.


3
Coğrafi arama Solr'da LocalSolr eklentisi ile yapılabilir: gissearch.com/localsolr
Mauricio Scheffer

1
dakikada 1,5 milyon doküman INDEX yapabilirsiniz? SSD'mde doğrudan 7zip (yazmıyorum, konsola çıktı) dosyalarından bu kadar çok OKUYUNA bile yaklaşamıyorum! Ve 2017! Bunlar ne tür belgeler? Bu inanılmaz. Not: Umarım bir dakika içinde 1,5 milyonluk endeksi aramak istememişsinizdir . 1,5 milyon dokümana sahip bir endeks araması yine de saniyeler içinde geri dönmelidir (2009'da bile).
FastAl

2

Lucene / Solr daha fazla özellikli ve uzun yıllar iş dünyası ve çok daha güçlü bir kullanıcı topluluğuna sahip gibi görünüyor. imho bazı (biz değil) karşı karşıya gibi görünüyor ilk kurulum sorunları geçmiş alabilirsiniz o zaman Lucene / Solr en iyi bahis olduğunu söyleyebilirim.


Kullanıcı topluluğu önemli bir noktadır. Sfenks forumlarında çok, çok yararlı insanlar bir çift vardır, ancak aksi takdirde güçlü bir topluluk yoktur.
mlissner
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.