Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memesan Hasil Carian MySQL mengikut 'Padanan Terbaik'?

Bagaimanakah Saya Boleh Memesan Hasil Carian MySQL mengikut 'Padanan Terbaik'?

Barbara Streisand
Barbara Streisandasal
2024-12-28 15:21:14217semak imbas

How Can I Order MySQL Search Results by

Memesan Keputusan MySQL mengikut "Padanan Terbaik"

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:

Memesan Padanan mengikut Kedudukan Mula

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).

Memesan Padanan mengikut Kedudukan

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.

Memecah Ikatan

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

pemegang tempat boleh digantikan dengan sebarang kriteria tambahan yang digunakan untuk pemeringkatan, seperti panjang perkataan, susunan abjad atau metrik tersuai.

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!

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