Menyelesaikan masalah "Tidak dapat mencari indeks FULLTEXT yang sepadan dengan senarai lajur" untuk Carian Berbilang Lajur
Apabila membina MATCH...LAWAN pertanyaan melibatkan berbilang lajur dalam indeks teks penuh, adalah penting untuk memastikan bahawa susunan lajur dalam indeks sepadan dengan tertib yang muncul dalam klausa MATCH. Berdasarkan mesej ralat yang anda temui, nampaknya definisi indeks teks penuh anda merangkumi lebih banyak lajur daripada klausa MATCH anda.
Seperti yang anda nyatakan, jadual anda mengandungi indeks teks penuh yang ditakrifkan pada berbilang lajur:
FULLTEXT KEY `name` (`name`,`breadcrumb`,`description`,`brand`,`price`,`year`,`km`,`usage`,`type`)
Walau bagaimanapun, klausa MATCH anda hanya merangkumi lajur berikut:
MATCH(`brand`) AGAINST('Skoda');
Ketakpadanan antara bilangan lajur dalam indeks dan klausa MATCH ini menyebabkan ralat. Untuk membetulkan isu ini, anda perlu melaraskan sama ada takrif indeks atau klausa MATCH untuk memastikan ia sejajar.
Pendekatan yang disyorkan ialah mengubah suai indeks teks penuh agar sepadan dengan lajur yang anda ingin gunakan dalam carian anda. Dalam kes ini, anda boleh melaksanakan pertanyaan berikut untuk menambah indeks teks penuh baharu yang mengandungi hanya lajur jenama:
ALTER TABLE products ADD FULLTEXT(brand);
Selepas menambah indeks yang betul, jalankan semula pertanyaan MATCH anda:
SELECT * FROM products WHERE MATCH(`brand`) AGAINST('Skoda');
Ini sepatutnya mengembalikan hasil yang dijangkakan tanpa mesej ralat.
Atas ialah kandungan terperinci Mengapakah saya mendapat \'Tidak dapat mencari indeks FULLTEXT yang sepadan dengan senarai lajur\' apabila mencari berbilang lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!