Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengutamakan Perkaitan dalam Carian Teks Penuh MySQL Merentasi Berbilang Lajur?
Mengutamakan Perkaitan dalam Carian Teks Penuh MySQL dengan Berbilang Lajur
Dalam MySQL, fungsi MATCH() AGAINST() memudahkan carian teks penuh merentas berbilang lajur. Secara lalai, perkaitan carian ditentukan oleh kejadian gabungan istilah yang sepadan dalam semua lajur yang ditentukan. Walau bagaimanapun, anda mungkin menghadapi senario di mana anda perlu mengutamakan perkaitan berdasarkan lajur tertentu.
Perkaitan mengikut Lajur
Untuk mencapai ini, anda boleh memperkenalkan berbilang lajur perkaitan, satu untuk setiap lajur, seperti yang anda nyatakan. Walaupun pendekatan ini memastikan keutamaan yang tepat, ia juga membayangkan carian berlebihan, menjejaskan prestasi.
Mengoptimumkan Pengutamaan Relevan
Kaedah alternatif yang mengimbangi prestasi dan keutamaan perkaitan adalah dengan melaraskan formula pengiraan perkaitan. Berikut ialah pertanyaan yang diubah suai yang menggabungkan pekali berat untuk lajur kepala:
SELECT * , MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') AS title_weight FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY (title_weight + relevance) DESC
Pertanyaan ini memberikan wajaran yang lebih tinggi kepada skor perkaitan lajur kepala. Dengan melaraskan berat dengan sewajarnya, anda boleh mengutamakan perkaitan berdasarkan lajur tertentu.
Bonus: Mengira Kejadian Perkataan
Untuk mengira kejadian istilah yang sepadan dalam setiap lajur, anda boleh menggunakan bendera MOD BOOLEAN dalam MATCH():
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance, MATCH (head) AGAINST ('some words' IN BOOLEAN MODE) AS title_count FROM pages WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) ORDER BY title_count DESC, relevance DESC
The title_count lajur menunjukkan berapa kali istilah yang ditentukan erscheinen dalam lajur kepala. Maklumat ini membantu dalam memperhalusi hasil carian anda dengan lebih lanjut.
Nota: Pendekatan ini sesuai untuk MySQL versi 8.0 dan ke atas. Untuk versi lama, anda mungkin perlu meneroka kaedah alternatif untuk mengutamakan perkaitan dan mengira kejadian istilah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengutamakan Perkaitan dalam Carian Teks Penuh MySQL Merentasi Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!