Cari API vs. Pencarian Apache Solr

34

Saya telah menggunakan modul Pencarian Apache Solr di Drupal 6 dan saya sedang mencari API Pencarian untuk instalasi Drupal 7. Saya telah melihat beberapa diskusi di sini tetapi saya mencari alasan untuk memilih satu atau yang lain.

Apakah ada alasan untuk memilih satu dari yang lain? Jika ya, mengapa atau mengapa tidak? Saya telah mendengar mungkin ada masalah kompleksitas dan / atau masalah kinerja dengan API Pencarian. Apakah ini benar?

teriakan
sumber
Saya tidak akan menyarankan solr untuk pencarian multibahasa. Tergantung seberapa pentingnya pencarian ini, pencarian multibahasa bisa menghabiskan waktu. Pengaturannya bisa menyakitkan. Untuk pencarian multibahasa, bahasa Anda harus didukung oleh solr. Ada aturan tata bahasa yang harus ditetapkan untuk bahasa Anda. Anda juga perlu menginstal java dan solr agar Anda tidak dapat menggunakan hosting berbagi murah. Jika Anda mengembangkan mesin pencari, Anda mungkin ingin menggunakannya. Jika Anda menghitung sumber daya pengembangan maka pencarian situs google Payd mungkin menjadi pilihan yang lebih baik! Saya bahkan seorang co-maintainer untuk moduls gss
ram4nd
Mengapa demikian? Adakah tolok ukur?
giorgio79
Ou, maaf, pengaturannya bisa menyakitkan. Untuk pencarian multibahasa, bahasa Anda harus didukung oleh solr. Ada aturan tata bahasa yang harus ditetapkan untuk bahasa Anda. Juga ketika saya melihat ke dalamnya modul-modul di mana dalam status devel dan membutuhkan lebih banyak pekerjaan untuk membuat semuanya berfungsi. Tetapi ini adalah mesin pencari tercepat. Jadi Anda harus bertanya pada diri sendiri, seberapa pentingkah fitur pencarian untuk Anda. Anda juga perlu menginstal java dan solr agar Anda tidak dapat menggunakan hosting berbagi murah.
ram4nd
Salah satu hal yang saya harus datang ke Apache Solr dibandingkan dengan Pencarian API adalah memiliki pencarian filter multi-pilih. Dengan Search API, sepertinya tidak mungkin. Solr tampaknya memiliki opsi ini.
user219492
Saya akan menyebutkan dukungan Multi-Situs: SearchAPI tidak memiliki dukungan multi-situs (menggunakan indeks SOLR yang sama untuk menyimpan beberapa konten situs). Apachesolr, sebagai gantinya memungkinkan untuk: 1. mengindeks beberapa konten sistes dalam indeks SOLR yang sama 2. memfilter hasil berdasarkan situs tertentu 3. melakukan pencarian hanya pada situs lokal menyaring hasil dari situs lain
thePanz

Jawaban:

19

Pada 2015, kita bisa membandingkan modul Pencarian API vs Apache Solr Pencarian dengan angka:

                   | 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

yang menunjukkan pilihan yang jelas. Pencarian API dikembangkan 3 tahun kemudian dan berhasil mengambil keuntungan dari pesaingnya.

Lebih jauh lagi, Pencarian API menyediakan arsitektur yang sangat berbeda dan lebih fleksibel dan sedang dirawat lebih aktif. Yang lebih penting, ia sudah mendukung Drupal 8 dan Solr 5.x terbaru yang belum dimiliki oleh Apachesolr.

API pencarian mulai segar dan lebih fleksibel dalam konfigurasinya termasuk dukungan Views (untuk Apachesolr Anda memerlukan modul tambahan). Ada juga banyak modul yang memperluas fungsinya.

Kedua untuk menghindari beberapa masalah yang diselesaikan dua kali oleh masyarakat karena perbedaan dalam arsitektur modul-modul ini, saat ini ada beberapa upaya gabungan antara kedua proyek ini seperti:

  • membuat cara umum untuk menampilkan blok facet melalui Facet API (juga dikenal sebagai filter),
  • skema umum dan file konfigurasi solrconfig.xml,
  • kedua pengelola bekerja bersama dan memigrasikan kelas koneksi dari modul Pencarian Apache Solr ke dalam API Pencarian.

Sumber: Battleplan untuk Pencarian & Solr di Drupal 8 di Acquia

Catatan, tidak disarankan untuk menggunakan kedua modul di lingkungan yang sama.

Untuk analisis perbedaan teknis lebih lanjut, silakan periksa detail di bawah ini.

API pencarian

Ikhtisar API:

  • Kerangka kerja untuk membuat pencarian dengan mudah
  • Abstrak dari sumber data dan implementasi backend
  • Ekosistem besar dengan ekstensi, misalnya backend
  • Integrasi API facet
  • Sangat berdasarkan pada API Entitas

    • Menyediakan metadata
    • Digunakan untuk konfigurasi indeks dan server

Fitur ekstensi:

  • Cari API Autocomplete
  • Lampiran
  • Pencarian Tersimpan
  • Lokasi
  • Path Faset Cantik
  • Slider (Kisaran API Pencarian)
  • dan masih banyak lagi.

Struktur dasar:

Struktur Dasar modul Pencarian API Solr

Fitur indeks:

  • Sumber data berbeda
  • Satu sumber data: entitas
  • Berdasarkan API Entitas:

    • Setiap properti dapat diindeks
    • Properti entitas terkait dapat diindeks

Cara mengonfigurasi bidang indeks Anda:

Cara mengonfigurasi bidang indeks Anda di Cari API Solr

Tampilan Penelusuran API:

  • Dukungan Tampilan Penuh
  • Tampilkan properti apa pun dari entitas
  • Gunakan bidang yang diindeks apa pun sebagai filter, argumen, atau urutkan
  • Sebagian besar kode didasarkan pada integrasi tampilan Entity API
  • Secara default: data diambil melalui pemuatan entitas

    • Dapat dilewati (pengaturan "Ambil data dari Solr" di server)
  • Alternatif: Cari halaman API

Cari Resep API:

  • Kait CRUD untuk indeks dan server
  • Kait untuk ditambahkan

    • sumber data
    • backends
    • perubahan data
    • pengolah
  • Hook dipecat saat mengindeks item

  • Hook dipecat saat menjalankan pencarian

Apachesolr

Fitur ekstensi:

  • Lampiran (tidak ada dukungan media, pengkodean khusus untuk lampiran ke entitas lain)
  • Lokasi (Geo Apachesolr, Lokasi Apachesolr)

Resep Apachesolr:

  • Platform Pencarian Perusahaan Sumber Terbuka
  • Yayasan Apache
  • Pencarian teks lengkap, highlight, pencarian faceted, clustering, penanganan dokumen kaya
  • Didistribusikan
  • Replikasi / scalable
  • Jawa
  • REST HTTP dan jawaban dalam XML / JSON dan beberapa lainnya
  • Tidak Relasional

Sumber: Pencarian API vs tampilan slide Apachesolr


Lihat juga:

kenorb
sumber
Tulisan yang bagus, terima kasih! Pertanyaan 1: mengapa disarankan untuk tidak menggunakan kedua modul di lingkungan yang sama? Pertanyaan 2: Apakah perbedaan kinerja antara modul dapat diabaikan pada saat ini (saya mengerti API Pencarian dg solr sekarang dapat mengindeks beberapa bidang, jadi beban entitas tidak lagi diperlukan untuk menampilkan misalnya gambar mini dengan hasil pencarian)?
Jordan Magnuson
@JordanMagnuson 1. Anda tidak menggunakan kedua modul pada saat yang sama, karena mereka tidak kompatibel banyak dan sebagian besar situs web hanya berurusan dengan satu contoh pencarian Solr, jadi tidak masuk akal untuk menggunakan keduanya, kecuali jika Anda tidak keberatan untuk menggandakan pekerjaan. Misalnya ketika Anda perlu membuat beberapa tampilan pencarian, kedua modul menawarkan integrasi terpisah dengan modul view, jadi Anda perlu membuat dua view.
kenorb
@JordanMagnuson 2. Saya tidak yakin tentang kinerjanya, saya tidak pernah punya yang spesifik dan mungkin itu mengubah setiap versi (saya menggunakan Apachesolr sejak lama). Jika Anda menggunakan view dan facet, Anda biasanya menggunakan mekanisme cache views, jadi Anda tidak terlalu peduli dengan waktu pemrosesan dan tentu saja memcached, APC / XCache, dll. Kinerja sangat tergantung pada struktur situs dan bagaimana modul saling berinteraksi. lain.
kenorb
Lucu bahwa API Pencarian lebih banyak digunakan, namun Acquia sendiri merekomendasikan menggunakan modul Apache Solr docs.acquia.com/acquia-search/search-api#animated
AlxVallejo
@AlxVallejo Saya pikir mereka merekomendasikannya untuk produksi, karena mereka memiliki file konfigurasi Apachesolr yang stabil dan ditulis dengan baik untuk mendukung Acquia Cloud mereka (dibagikan) contoh Solr (itulah satu-satunya alasan saya kira) dan mengingat bahwa API Pencarian aktif di negara pengembangan, jadi risiko yang terlibat termasuk bahwa file konfigurasi perlu diperbarui lebih sering. Mereka merekomendasikannya ke proyek kami (besar) juga, tetapi setelah waktu yang singkat bermain-main dan memeriksa persyaratan kami, kami mengubah rekomendasi mereka ke Search API. Mereka tidak memiliki file konfigurasi yang stabil, namun kami menyediakan file kami sendiri.
kenorb
24

Saya sudah mencoba menggunakan keduanya dan saya bisa mengatakan ini: itu tergantung pada situasi Anda.

Saat ini, rilis stabil 7 dari modul Integrasi ApacheSolr hanya dapat mengindeks node. Jadi jika Anda memiliki entitas non-simpul yang perlu Anda indeks, Anda harus menggunakan patch multientity yang masih dalam proses untuk itu. ApacheSolr Integration dapat menyimpan banyak data konten yang berbeda ketika dikonfigurasi dengan benar.

API Penelusuran melakukan index entites dan memiliki banyak hal bagus yang ditulis untuknya. Namun, API Pencarian hanya mengambil id dari data yang Anda cari. Ini berarti memuat lebih banyak data selain ID akan memerlukan entitas_load, mengenai basis data Anda atau lapisan caching apa pun yang Anda tempatkan. Untuk situs pencarian berat, ini mungkin bukan solusi yang paling optimal.

Berikut ini adalah presentasi hebat yang diberikan di drupalcon chicago tentang modul Integrasi ApacheSolr, menit ke 16 untuk menyebutkan API Pencarian.

LSU_JBob
sumber
ikhtisar yang luar biasa. persis apa yang ingin saya ketahui. Terima kasih!
Hross
Jika ini berhasil menjawab pertanyaan Anda, bisakah Anda menandainya sebagai jawaban? Terima kasih!
LSU_JBob
1
Bagi Anda yang bertanya-tanya, multientity sekarang di cabang dev dari integrasi apache solr, jadi harus keluar dengan beta berikutnya.
LSU_JBob
2
Bagi mereka yang membaca utas ini .. Salah satu faktor yang mengurangi kinerja adalah API Pencarian memungkinkan pengindeksan dan pengambilan data node sekarang. Ada diskusi kinerja di sini .
Hross
1
Jawaban ini kedaluwarsa, lihat drupal.org/node/1999392 search_api_solr sekarang memiliki opsi multisite, juga memungkinkan pengembalian bukan hanya NID. Pertumbuhan besar-besaran pada basis instalasi search_api_solr pada tahun 2014 melampaui penggunaan D7 apachesolr.
Duncanmoo
2

Saya pikir Anda benar-benar harus mencoba keduanya dan membuat keputusan berdasarkan informasi. Tetapi pertimbangkan dengan kuat bahwa apachesolr masih belum memiliki beta untuk Drupal 8.

Di API Pencarian Anda tidak dapat menggabungkan entitas pada indeks SearchAPI yang sama. Jadi Profil, Pengguna, Node berada pada indeks yang berbeda. Ada modul untuk memungkinkan pencarian multiindex, itu tidak menutupi kebutuhan saya, tetapi YMMV. Jika Anda memiliki banyak jenis konten dan banyak bidang pada indeks yang sama, definisi indeks dapat menjadi sangat sulit. (NB SearchAPI D8 melaporkan untuk mendukung pencarian multi-indeks)

Apachesolr memungkinkan pengeditan bidang berdasarkan setiap konten yang mungkin lebih mudah, tetapi tidak memiliki kemampuan untuk menambahkan konten terkait ke dokumen, pada kenyataannya berharap harus menulis beberapa kode khusus untuk memasukkan informasi dari kumpulan bidang, referensi dan beberapa lainnya bidang. Apachesolr D7 tidak mendukung ajax, kecuali jika Anda menggunakan tampilan, tetapi menggunakan tampilan Anda kehilangan sisi. Yang mengatakan ... memodifikasi informasi yang disimpan dalam indeks cukup mudah jika Anda senang mengodekan di kait.

Gagasan untuk mencari id entitas dan kemudian membuat masing-masing secara individual (dapat digunakan oleh kedua modul) tampaknya menjadi mimpi buruk kinerja, tetapi, jika Anda men-cache tampilan entitas Anda, itu mungkin lebih efisien daripada rendering dari respon solr.

dmcg
sumber