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?
Jawaban:
Pada 2015, kita bisa membandingkan modul Pencarian API vs Apache Solr Pencarian dengan angka:
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:
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:
Sangat berdasarkan pada API Entitas
Fitur ekstensi:
Struktur dasar:
Fitur indeks:
Berdasarkan API Entitas:
Cara mengonfigurasi bidang indeks Anda:
Tampilan Penelusuran API:
Secara default: data diambil melalui pemuatan entitas
Cari Resep API:
Kait untuk ditambahkan
Hook dipecat saat mengindeks item
Apachesolr
Fitur ekstensi:
Resep Apachesolr:
Sumber: Pencarian API vs tampilan slide Apachesolr
Lihat juga:
sumber
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.
sumber
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.
sumber