Hasil Carian MySQL Disusun Mengikut Relevan
Soalan:
Mengoptimumkan pertanyaan carian dalam MySQL untuk mengutamakan hasil di mana rentetan carian kelihatan lebih dekat dengan permulaan perkataan, menghasilkan lebih mesra pengguna pesanan "padanan terbaik".
Perbincangan:
Pertanyaan awal, PILIH perkataan DARI perkataan DIMANA perkataan SEPERTI '%searchstring%' ORDER OLEH perkataan ASC, mengisih hasil mengikut abjad tanpa sebarang keutamaan untuk meletakkan rentetan carian dalam perkataan. Untuk menangani isu ini, kami boleh menggunakan pernyataan CASE MySQL untuk kaedah pengisihan pertama dan fungsi LOCATE untuk yang kedua.
Penyelesaian:
Kaedah pengisihan pertama (mula, tengah, akhir perkataan):
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY CASE WHEN word LIKE 'searchstring%' THEN 1 -- Starts with search string WHEN word LIKE '%searchstring' THEN 3 -- Includes search string ELSE 2 -- Does not include search string END
Kaedah pengisihan kedua (kedudukan rentetan yang dipadankan):
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word)
Pemutus seri (pilihan):
Untuk memperhalusi lagi susunan dalam senario di mana berbilang perkataan berkongsi kedudukan dalam perkataan itu, yang kedua medan pengisihan boleh ditambah menggunakan perkataan itu sendiri:
SELECT word FROM words WHERE word LIKE '%searchstring%' ORDER BY LOCATE('searchstring', word), word
Kesimpulan:
Dengan menggunakan teknik ini, hasil carian boleh disusun mengikut perkaitan, dengan keutamaan untuk padanan yang kelihatan lebih dekat dengan permulaan perkataan. Ini memberikan pengalaman pengguna yang lebih intuitif dan meningkatkan ketepatan fungsi carian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Carian MySQL untuk Mengutamakan Keputusan Di mana Istilah Carian Muncul Terdahulu dalam Word?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!