Arama API'sı Apache Solr Araması


34

Drupal 6'daki Apache Solr Search modülünü kullanıyorum ve Drupal 7 kurulumu için Search API'sına bakıyorum . Burada bir tartışma gördüm ama birini seçmek için herhangi bir sebep arıyorum.

Birini diğerinden seçmek için bir neden var mı? Öyleyse, neden ya da neden olmasın? Search API ile ilgili karmaşıklık sorunları ve / veya performans sorunları olabileceğini duydum. Bu doğru mu?


Çok dilli arama için solr önermem. Aramanın çok dilli olmasının ne kadar önemli olduğuna bağlı olarak, tek kelimeyle arama gerçekten zaman alabilir. Kurulum acı verici olabilir. Çok dilli arama için dilinizin solr tarafından desteklenmesi gerekir. Diliniz için ayarlanması gereken gramer kuralları vardır. Ayrıca java ve solr yüklü olması gerekir, böylece ucuz paylaşımlı hosting kullanamazsınız. Bir arama motoru geliştiriyorsanız kullanmak isteyebilirsiniz. Geliştirme kaynaklarını hesaplıyorsanız, Payd google site search daha iyi bir seçenek olabilir! Ben bile gss modulep için bir koruyucuyum
ram4nd

Neden? Herhangi bir kıyaslama var mı?
giorgio79,

Ou üzgünüm, kurulumun acı verici olabileceğini söylüyorum. Çok dilli arama için dilinizin solr tarafından desteklenmesi gerekir. Diliniz için ayarlanması gereken gramer kuralları vardır. Aynı zamanda, devel durumundaki ve işleri yürütmek için daha fazla çalışmaya ihtiyaç duyan modülleri araştırdığımda. Ama en hızlı arama motorudur. Bu yüzden kendinize sormalısınız, arama özelliği sizin için ne kadar önemli? Ayrıca java ve solr yüklü olması gerekir, böylece ucuz paylaşımlı hosting kullanamazsınız.
ram4nd

Arama API'sına kıyasla Apache Solr'a gelmem gereken şeylerden biri çoktan seçmeli bir filtre aramasıydı. Arama API'sı ile imkansız görünüyordu. Solr bu seçeneğe sahip görünüyordu.
user219492,

Çoklu Site desteğinden bahsedeceğim: SearchAPI çoklu site desteğine sahip değil (birden fazla site içeriğini depolamak için aynı SOLR endeksini kullanarak). Aynı SOLR endeksi 2. filtresinde 1. endeks multipl sistes contentents belirli bir site 3. tarafından sonuçları diğer sitelerden sonuçlar filtreleyerek sadece yerel sitede bir arama yapmak: Apachesolr yerine izin
thePanz

Yanıtlar:


19

2015 itibariyle, Arama API'sı ile Apache Solr Arama modüllerini aşağıdakilerle karşılaştırabiliriz:

                   | Apache Solr Search  | Search API
Posted in:         | 2007                | 2010
Downloads:         | >2k                 | >20k
Reported installs: | >21k                | >64k
Total bugs:        | >1200               | >600
Active bugs:       | >200                | >170
Commits:           | >1.3k               | >1.5k

Bu net bir seçim olduğunu gösterir. Search API, 3 yıl sonra geliştirildi ve rakiplerinden yararlanmayı başardı.

Dahası, Search API çok farklı ve daha esnek bir mimari sağlar ve daha aktif bir şekilde korunur. Daha da önemlisi, Apachesolr'un henüz sahip olmadığı en yeni Drupal 8 ve Solr 5.x'i destekledi.

Arama API'si yeni başladı ve Görüntüleme desteği de dahil olmak üzere yapılandırmasında daha esnek (Apachesolr için ekstra modüle ihtiyacınız var). İşlevselliğini artıran çok sayıda modül vardır.

İkincisi, bu modüllerin mimarisindeki farklılıklar nedeniyle toplum tarafından bazı sorunların iki kez çözülmesini önlemek için, şu anda bu iki proje arasında bazı ortak çabalar bulunmaktadır:

  • Facet API üzerinden faset bloklarını göstermenin ortak yolunu oluşturmak (ayrıca filtre olarak da bilinir ),
  • ortak bir şema ve solrconfig.xml yapılandırma dosyaları,
  • Her iki bakımcı birlikte çalıştı ve bağlantı sınıflarını Apache Solr Search modülünden Search API'ya geçirdi.

Kaynak: Drupal 8'de Search & Solr için battleplan Acquia de

Her iki modülün de aynı ortamda kullanılması önerilmemektedir.

Farklılıkların daha ayrıntılı teknik analizi için, lütfen aşağıdaki detayları kontrol edin.

API ara

API'ye Genel Bakış:

  • Kolayca arama oluşturmak için çerçeve
  • Veri kaynaklarından ve arka uç uygulamalarından özetler
  • Uzantılı geniş ekosistem, örneğin arka uçlar
  • Faset API entegrasyonu
  • Ağırlıkla Varlık API'sine dayalı

    • Meta veri sağlar
    • Dizin ve sunucu yapılandırmaları için kullanılır

Uzatma özellikleri:

  • Arama API'sı Otomatik Tamamlama
  • Ekler
  • Kaydedilen Aramalar
  • yer
  • Güzel Yönlü Yollar
  • Slider (Arama API Aralıkları)
  • ve daha fazlası.

Basit yapı:

Search API Solr modülünün Temel Yapısı

Dizin özellikleri:

  • Farklı veri kaynakları
  • Bir veri kaynağı: varlıklar
  • Varlık API'sına göre:

    • Her özellik endekslenebilir
    • İlgili varlıkların özellikleri endekslenebilir

Dizininizi yapılandırma - alanlar:

Dizininizi yapılandırma - Arama API Solr'daki alanlar

API Görünümlerini Ara:

  • Tam Görünümler desteği
  • Bir varlığın herhangi bir özelliğini gösterme
  • Dizine alınmış herhangi bir alanı filtre, argüman veya sıralama olarak kullanma
  • Varlık API'sinin görünüm entegrasyonunu temel alan çoğu kod
  • Varsayılan olarak: varlık yükü yoluyla alınan veriler

    • Atlanabilir (sunucudaki "Solr'dan veri al" ayarı)
  • Alternatif: API sayfalarını ara

API Tariflerini Ara:

  • Dizinler ve sunucular için CRUD kancaları
  • Ekleme için kancalar

    • veri kaynakları
    • backends
    • veri değişiklikleri
    • işlemciler
  • Öğeleri indekslerken kanca ateş

  • Bir arama yürütülürken Kanca ateşlendi

Apachesolr

Uzatma özellikleri:

  • Ekler (medya desteği yok, diğer varlıklara ekler için özel kodlama)
  • Yer (Apachesolr geo, Apachesolr konumu)

Apachesolr Tarifler:

  • Açık Kaynak Kurumsal Arama Platformu
  • Apache Vakfı
  • Tam metin araması, vurgulama, yönlü arama, kümeleme, zengin belge işleme
  • Dağıtılmış
  • Çoğaltma / ölçeklenebilir
  • Java
  • REST HTTP ve XML / JSON ve diğerlerinde cevaplar
  • İlişkisel Değil

Kaynak: Arama API'sı - Apachesolr slayt gösterisi


Ayrıca bakınız:


Harika yazı, teşekkürler! Soru 1: Neden her iki modülü de aynı ortamda kullanmamanız tavsiye edilir? Soru 2: Bu noktada modüller arasındaki performans farkları önemsiz mi (şu anda birden fazla alanı indeksleyebilecek Arama API'sı var, bu nedenle varlık yükü artık arama sonuçlarına sahip küçük resmi görüntülemek için gerekli değil mi)?
Jordan Magnuson

@JordanMagnuson 1. Her iki modülü de aynı anda kullanmazsınız, çünkü pek uyumlu değillerdir ve web sitelerinin çoğu yalnızca bir Solr arama örneğiyle ilgilenmektedir, bu nedenle, her ikisini de kullanmanın bir anlamı yoktur. İşi çoğaltmak için sakıncası yoksa. Örneğin, bazı arama görünümleri oluşturmanız gerektiğinde, her iki modül de görünüm modülüyle ayrı entegrasyon sunar, bu nedenle iki görünüm oluşturmanız gerekir.
kenorb

@JordanMagnuson 2. Performanstan emin değilim, hiçbir zaman belirli bir sürümüne sahip değildim ve muhtemelen her sürümü değiştirdi (çok uzun zaman önce Apachesolr kullanıyordum). Görünümleri ve fasetleri kullanıyorsanız, genellikle görünümler önbellek mekanizmasını kullanırsınız, bu nedenle işlem süresini ve tabii ki memcached, APC / XCache, vb. İşlemlerini umursamıyorsunuz. Performans gerçekten site yapısına ve modüllerin her birinin nasıl etkileşimde bulunduğuna bağlı diğer.
kenorb

Arama API'sinin daha çok kullanılmasına rağmen, Acquia'nın
AlxVallejo

@AlxVallejo Üretim için tavsiye ettiklerini düşünüyorum, çünkü Acquia Cloud (paylaşılan) Solr örneklerini (tahmin ettiğim tek neden bu) desteklerini sağlamak için kararlı ve iyi yazılmış Apachesolr yapılandırma dosyalarına sahipler ve Arama API'sinin aktif durumda olduğu göz önüne alındığında, Bu nedenle, söz konusu risk, yapılandırma dosyalarının daha sık güncellenmesi gerekeceği de içeriyordu. Bunu da (büyük) projemize önerdiler, ancak kısa bir süre oynadıktan ve gereksinimlerimizi kontrol ettikten sonra, önerilerini Search API olarak değiştirdik. Kararlı konfigürasyon dosyalarına sahip değillerdi ama biz kendimizinkini verdik.
kenorb

24

Her ikisini de kullanmayı denedim ve şunu söyleyebilirim: bu sizin durumunuza bağlı.

Şu anda, ApacheSolr Integration modülünün kararlı 7 sürümü yalnızca düğümleri endeksleyebilir. Bu nedenle, dizine eklemeniz gereken düğüm olmayan varlıklar varsa, bunun için hala devam eden çok kanallı düzeltme ekini kullanmanız gerekir. ApacheSolr Integration, uygun şekilde yapılandırıldığında birçok farklı içerik verisini depolayabilir.

Arama API'sı dizine katılmıyor ve bunun için yazılmış çok sayıda harika şey içeriyor. Ancak, Arama API'si yalnızca aradığınız verilerin kimliğini alır. Bu, kimlik dışındaki herhangi bir veriyi yüklemek için bir entity_load gerektirecektir, veritabanınıza veya herhangi bir önbelleğe alma katmanına koyacağınıza. Arama ağırlıklı siteler için bu, en iyileştirilmiş çözüm olmayabilir.

İşte API Arama bahseder için ApacheSolr Entegrasyon modülü hakkında DrupalCon chicago verilen büyük bir sunum, dakika 16 olduğunu.


harika bir bakış. tam olarak bilmek istediklerimi. Teşekkürler!
saat

Bu başarılı bir şekilde sorunuza cevap verdiyseniz, lütfen cevap olarak işaretleyebilir misiniz? Teşekkürler!
LSU_JBob

1
Merak edenler için çok yönlülük şu anda apache solr entegrasyonunun dev dalındadır, bu yüzden bir sonraki beta ile olması gerekir.
LSU_JBob

2
Bu konuyu okuyanlar için .. Performansta azaltıcı bir faktör Arama API'si, düğüm verilerinin şimdi endekslenmesine ve alınmasına olanak tanıyor. Burada bir performans tartışması var .
Ocak'ta

1
Bu cevap güncel değil, drupal.org/node/1999392 'ye bir göz atın search_api_solr artık multisite seçeneklerine sahip, aynı zamanda sadece NID'nin geri gönderilmesine izin vermiyor. Search_api_solr'un 2014 yılındaki kurulum üssünde, apachesolr'ın D7 kullanımının üstesinden gelen büyük büyüme.
Duncanmoo

2

Bence her ikisini de denemek ve bilinçli bir karar vermek zorundasınız. Ancak apachesolr'ın hala Drupal 8 için beta sürümünün olmadığını düşünün.

Arama API'sında varlıkları aynı SearchAPI dizininde birleştiremezsiniz. Dolayısıyla Profiller, Kullanıcılar, Düğümler farklı indekslerdedir. Çok dizinli aramalara izin verecek bir modül var, benim ihtiyaçlarımı karşılamadı, ancak YMMV. Aynı dizinde çok sayıda içerik türünüz ve birçok alanınız varsa, dizin tanımı oldukça istenmeyen bir hal alabilir. (NB SearchAPI D8 çoklu endeks aramayı desteklemek için raporlar)

Apachesolr, alanların içerik bazında daha kolay olabilecek, ancak belgeye ilgili içerik ekleme kabiliyetine sahip olmayan düzenlemelere izin verir, aslında alan koleksiyonlarından, referanslardan ve bazı diğerlerinden gelen bilgileri içerecek bazı özel kodlar yazmayı bekler. alanlar. Apachesolr D7 görünümleri kullanmadığınız sürece ajax'ı desteklemez, ancak görünümleri kullanarak yönleri kaybedersiniz. Bununla birlikte, eğer ... kancalarda mutlu bir şekilde kodlama yapıyorsanız, endekste depolanan bilgileri değiştirmek oldukça kolaydır.

Varlık kimliklerini arama ve ardından her birini ayrı ayrı oluşturma (her iki modül tarafından da kullanılabilir) düşüncesi performans kabusu gibi görünebilir, ancak varlığınızı önbelleğe alırsanız solr yanıtından görüntülemekten daha verimli olabilir.

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.