Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Carian Berkaitan dalam Laravel dengan Berbilang Kata Kunci?

Bagaimana untuk Melaksanakan Carian Berkaitan dalam Laravel dengan Berbilang Kata Kunci?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-08 06:43:01396semak imbas

How to Implement a Relevant Search in Laravel with Multiple Keywords?

Carian Laravel dengan Berbilang Kata Kunci dan Isih Kaitan

Pengenalan

Artikel ini membincangkan perkara biasa cabaran dalam pembangunan Laravel: melaksanakan fungsi carian yang menggabungkan berbilang kata kunci terhadap berbilang lajur pangkalan data. Hasil carian mesti disusun berdasarkan perkaitan, dengan mengambil kira kehadiran dan susunan kata kunci yang ditentukan.

Pernyataan Masalah

Seorang pengguna sedang cuba untuk melaksanakan enjin carian dalam Laravel di mana berbilang kata kunci dimasukkan ke dalam bar carian, dan hasilnya dipaparkan mengikut urutan perkaitan. Dua lajur khusus, meta_name dan meta_description, perlu ditanya. Kriteria carian adalah seperti berikut:

  • Baris yang mengandungi ketiga-tiga kata kunci dalam kedua-dua lajur hendaklah diutamakan.
  • Baris yang mengandungi dua kata kunci pertama sahaja harus diletakkan di kedudukan kedua.
  • Barisan yang mengandungi hanya kata kunci pertama harus diberi kedudukan ketiga.

Penyelesaian

Untuk mencapai susunan ini, tiga pertanyaan pangkalan data berasingan dibina:

$all = DB::table('posts')
    ->where('meta_name', 'like', ... /* %word1% %word2% %word3% */)
    ->orWhere('meta_description', 'like', ... /* %word1% %word2% %word3% */);

$twoWords = DB::table('posts')
    ->where('meta_name', 'like', ... /* %word1% %word2% */)
    ->orWhere('meta_description', 'like', ... /* %word1% %word2% */)
    ->whereNotIn('id', $all->pluck('id'));

$oneWord = DB::table('posts')
    ->where('meta_name', 'like', ... /* %word1% */)
    ->orWhere('meta_description', 'like', ... /* %word1% */)
    ->whereNotIn('id', $all->pluck('id'))
    ->whereNotIn('id', $twoWords->pluck('id'));

Kesatuan dan Pesanan

Akhir sekali, ketiga-tiga set hasil digabungkan menggunakan kesatuan:

$posts = $all->union($twoWords)->union($oneWord)->skip($start)->take($this->rowperpage)->get();

Proses ini memastikan baris yang sepadan dengan kriteria yang ditentukan diambil dalam susunan perkaitan yang dikehendaki.

Penomboran dan Pemuatan Async

Untuk melaksanakan penomboran load-on-scroll, kaedah langkau dan ambil boleh digunakan untuk menambahkan hasil baharu sebagai pengguna skrol. Apabila tiada lagi data untuk dipaparkan, mesej boleh dikembalikan.

Kesimpulan

Menggunakan penyelesaian yang disediakan, ciri carian akan mendapatkan semula hasil yang berkaitan berdasarkan berbilang kata kunci dan susunan penampilan mereka dalam lajur yang ditentukan. Hasilnya akan dipaparkan dalam cara memuatkan pada tatal, memberikan pengalaman pengguna yang lancar.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Carian Berkaitan dalam Laravel dengan Berbilang Kata Kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn