Memesan Keputusan MySQL mengikut Relevan: Padanan Terbaik Didahulukan
Dalam pangkalan data MySQL, fungsi carian langsung selalunya melibatkan pengisihan hasil berdasarkan perkaitan. Secara lalai, keputusan disusun mengikut abjad, tetapi bagaimana jika kita ingin mengutamakan hasil yang rentetan carian sepadan dengan permulaan perkataan?
Untuk mencapai ini, kita boleh menggunakan kenyataan CASE dan padanan corak untuk mencipta tersuai pesanan:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word LIKE 'searchstring%' THEN 1 WHEN word LIKE '%searchstring' THEN 3 ELSE 2 END
Pertanyaan ini memberikan keutamaan 1 kepada hasil yang rentetan carian muncul pada permulaan perkataan, 3 kepada rentetan yang terdapat rentetan padanan dalam perkataan dan 2 pada padanan yang tinggal.
Sebagai alternatif, untuk memesan berdasarkan kedudukan rentetan yang dipadankan, kita boleh menggunakan fungsi LOCATE:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
Pertanyaan ini mengisih keputusan berdasarkan kedudukan rentetan carian dalam perkataan, memberi keutamaan kepada padanan yang ditemui lebih awal dalam perkataan.
Akhir sekali, sekiranya berlaku ikatan apabila berbilang perkataan sepadan dengan rentetan carian, kami boleh menambah peraturan pengisihan sekunder untuk mengabjadkan hasil dalam setiap kumpulan keutamaan:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
Dengan melakukan pesanan tersuai berdasarkan kedudukan rentetan carian, kami boleh meningkatkan perkaitan hasil carian dan meningkatkan pengalaman pengguna.
Atas ialah kandungan terperinci Cara Memesan Hasil Carian MySQL mengikut Relevan: Memulakan Perlawanan Dahulu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!