Apabila mencari jadual pangkalan data dengan ciri carian langsung, selalunya wajar untuk menyusun keputusan mengikut cara yang mengutamakan perlawanan terbaik. Secara lalai, pertanyaan mudah seperti yang disediakan mungkin tidak menyusun hasil secara berkesan berdasarkan kedudukan permulaan rentetan carian.
Untuk mencapai susunan "padanan terbaik" yang lebih tepat, pertimbangkan pilihan berikut:
Jika matlamatnya adalah untuk mengisih hasil dengan rentetan yang dipadankan berlaku pada permulaan sebagai keutamaan tertinggi, pertanyaan boleh diubah suai seperti berikut:
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
Ini akan mengutamakan padanan yang bermula dengan rentetan carian (diberikan nilai 1), diikuti oleh padanan yang mengandungi rentetan (diberikan nilai 3), dan akhirnya padan di mana rentetan berlaku pada mana-mana kedudukan lain (diberikan nilai 2).
Sebagai alternatif, jika matlamatnya adalah untuk mengisih hasil berdasarkan kedudukan rentetan yang dipadankan dalam perkataan, pertanyaan boleh menggunakan fungsi LOCATE:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
Pertanyaan ini akan memerintahkan keputusan berdasarkan indeks kejadian pertama rentetan carian dalam setiap perkataan.
Dalam senario di mana berbilang perkataan sepadan dengan kriteria carian secara sama rata, mungkin wajar untuk memperkenalkan pemutus seri untuk memperhalusi lagi susunan. Ini boleh dicapai dengan menambah klausa ORDER BY tambahan:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY <whatever>, word
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memesan Hasil Carian MySQL mengikut 'Padanan Terbaik'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!