SORU
10 NİSAN 2009, Cuma


Tam metin arama motoru karşılaştırma - Lucene, Sphinx, Postgresql, MySQL?

Django bir site inşa ediyorum ve bir arama motoru arıyorum.

Birkaç aday:

  • Lucene/Pusula/Solr Lucene ile

  • Sfenks

  • Postgresql dahili tam metin arama

  • MySQl dahili tam metin arama

Seçim kriterleri:

  • alaka ve sıralama sonucu
  • ve hızlı arama için dizin oluşturma
  • Django ile kullanım kolaylığı ve entegrasyon kolaylığı
  • kaynak gereksinimleri - site ideal arama VPS, motoruna ev sahipliği yapacak RAM ve CPU bir sürü gerektirir olmaz
  • ölçülebilirlik
  • ekstra özellikler gibi "ciddi miydin?" ilgili aramalar, vb

Yukarıda arama motorları ile deneyimi olan birisi, ya da diğer motorları listesinde ... senin fikirlerini duymak isterim.

Kullanıcılar siteye veri girme, devam et olarak dizin oluşturma ihtiyacı için, bu verilerin sürekli endeksli olması gerekir. EDİT: Gerçek zamanlı olmak zorunda değil, ama ideal olarak yeni veri 15 - 30 ya da daha fazla dakika gecikme ile dizin bırakırmış

CEVAP
10 NİSAN 2009, Cuma


Görmek için iyi biri olduğu hakkında hiçbir fikrim yok çünkü Lucene çaldı -.

Sfenks, diğer taraftan, çok iyi biliyorum, o yüzden biraz yardım edebilir miyim, bir bakayım.

  • İlgi sıralaması sonucu varsayılan. İsterseniz kendi sıralama gerektiğini belirleyin ve belirli alanlarda, daha yüksek ağırlıkları verebilirsiniz.
  • Dizin oluşturma hızı doğrudan veritabanına konuşuyor çünkü süper-hızlı. Herhangi bir yavaşlık ve BM endeksli karmaşık SQL sorguları, yabancı anahtarlar ve diğer bu tür sorunlar gelecektir. Hiç arama herhangi bir yavaşlık fark ettim.
  • Raylar bir adamım, ne kadar kolay Django ile uygulamak için hiçbir fikrim yok. Sfenks kaynağı olsa birlikte gelen Python API var.
  • Arama hizmeti daemon searchd) bellek kullanımı oldukça düşük ve oluşturucu süreci çok kullanır how much memory sınırları ayarlayabilirsiniz.
  • Ölçülebilirlik bilgimi daha kabataslak nerede - ama kolay birden fazla makine için dizin dosyaları kopyalamak ve birkaç searchd araçları çalıştırmak için yeterli. Başkaları olsa aldığım genel izlenim, yüksek yük altında çok da iyi oldu çok olduğunu, birden fazla makine arasında bir büyütme ile çözülmesi gereken bir şey değil.
  • 'Mi-yani, bu diğer araçlar ile yapılabilir yeterince kolay olsa da. vb - desteği yok Sfenks sözlük kullanarak kelime kök yapar, 'sürüş' ve 'sürücü (örneğin) arar aynı olarak düşünülebilir.
  • Sfenks alan verileri için kısmi dizin güncelleştirmeleri olsa izin vermez. Bu ortak yaklaşım bu her değişiklikten sonra son değişiklikleri ve yeniden dizin tüm ile delta bir dizin (ve bu yeni sonuçlar bir veya iki saniye içinde görünür) korumaktır. Veri az miktarda nedeniyle, bu birkaç saniye alabilir. Yine de yeniden dizin ana veri kümesi düzenli olsa da (veri dalgalanmalarına bağlı nasıl her gün olsa? gerekir her saat?). Hızlı dizin oluşturma hızı bu olsa oldukça ağrısız.

Sizin durumunuz için ne kadar geçerli bu konuda bir fikrim yok, ama Evan Weaver compared a few of the common Rails search options (Sfenks, Gelincik (Ruby için Lucene bir liman) ve Solr), bazı kriterler çalışıyor. Faydalı olabilir, sanırım.

MySQL tam metin arama derinliklerinde değil iskandil atmıştı ettim, ama hız-bilge rekabet etmez, ne de özellik-bilge Sphinx, Lucene veya Solr ile biliyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ghosti66

    ghosti66

    27 AĞUSTOS 2006
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • RealPapaPit

    RealPapaPit

    16 Mart 2009