Rumah > Artikel > pangkalan data > Teknik carian teks penuh dalam MySQL
MySQL ialah salah satu pangkalan data hubungan yang paling biasa digunakan pada masa ini, di mana carian teks penuh juga merupakan fungsi yang sangat penting. Artikel ini akan memperkenalkan anda kepada teknik carian teks penuh dalam MySQL dan membantu anda menggunakan MySQL dengan lebih baik untuk carian teks penuh.
1. Konfigurasikan sokongan carian teks penuh
Untuk menggunakan fungsi carian teks penuh dalam MySQL, anda perlu terlebih dahulu memastikan pelayan telah mendayakan fungsi ini. Dalam MySQL 5.6.4 dan ke atas, anda boleh menggunakan arahan berikut untuk menyemak sama ada carian teks penuh telah didayakan:
SHOW VARIABLES LIKE 'innodb_ft%';
Jika innodb_ft_server ditetapkan kepada HIDUP, carian teks penuh telah didayakan.
Jika sokongan carian teks penuh tidak didayakan, anda perlu mengubah suai fail my.cnf (atau my.ini) dan tetapkan nilai parameter ft_min_word_len kepada panjang minimum perkataan yang anda cari . Secara lalai, nilainya ialah 4. Sebagai contoh, jika anda ingin mencari perkataan dengan panjang 3, anda perlu menukar nilainya kepada 3 dan mulakan semula perkhidmatan MySQL.
2. Cipta indeks teks penuh
Apabila sokongan carian teks penuh didayakan, anda boleh mencipta indeks teks penuh untuk jadual yang perlu dicari. Mencipta indeks teks penuh adalah semudah membuat indeks FULLTEXT pada lajur yang memerlukan carian teks penuh. Contohnya, jika anda ingin melakukan carian teks penuh pada badan artikel, anda boleh mencipta indeks FULLTEXT pada lajur "kandungan" jadual "artikel" menggunakan arahan berikut:
ALTER TABLE articles ADD FULLTEXT(content);
Ini akan mencipta FULLTEXT pada lajur "kandungan" Indeks untuk mempercepatkan pertanyaan carian teks penuh. Ambil perhatian bahawa indeks FULLTEXT hanya boleh dibuat pada lajur jenis data CHAR, VARCHAR atau TEXT. Setelah indeks teks penuh dibuat, carian teks penuh boleh bermula.
3. Gunakan pertanyaan carian teks penuh
Sintaks carian teks penuh menggunakan MySQL sangat serupa dengan pernyataan pertanyaan SQL biasa. Sebagai contoh, pernyataan untuk mencari semua artikel yang mengandungi perkataan "MySQL" adalah seperti berikut:
SELECT * FROM articles WHERE MATCH(content) AGAINST('MySQL');
Antaranya, klausa MATCH menentukan lajur yang hendak dicari, dan klausa AGAINST menentukan kata kunci yang hendak dicari. Jika anda ingin melakukan carian teks penuh dalam berbilang lajur, cuma senaraikan lajur. Contohnya, untuk mencari artikel yang mengandungi "MySQL" dalam kedua-dua teks dan tajuk artikel, anda boleh menggunakan arahan berikut:
SELECT * FROM articles WHERE MATCH(title,content) AGAINST('MySQL');
Apabila melakukan pertanyaan carian teks penuh, kita biasanya perlu memberi perhatian kepada isu berikut:
SELECT * FROM articles WHERE MATCH(content) AGAINST('"MySQL database"' IN BOOLEAN MODE);
SELECT * FROM articles WHERE MATCH(content) AGAINST('+MySQL -database' IN BOOLEAN MODE);
Dalam mod Boolean, tanda tambah "+" bermaksud bahawa perkataan mesti disertakan, "tanda tolak" bermaksud perkataan itu tidak disertakan, "asterisk" bermaksud ia sepadan dengan mana-mana perkataan, dan "petikan berganda" bermaksud ia sepadan dengan frasa yang lengkap.
SELECT * FROM lyrics WHERE MATCH(text) AGAINST ('+love +song' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION);
Dalam contoh ini, MySQL akan menggunakan corak bahasa semula jadi dan pengembangan pertanyaan untuk menentukan persamaan antara teks, menghasilkan hasil padanan yang lebih baik.
4. Kesimpulan
Carian teks penuh telah menjadi ciri standard dalam pangkalan data moden dan digunakan secara meluas dalam pelbagai bidang, termasuk rangkaian sosial, aplikasi berkaitan muzik dan video, dan banyak lagi. Teknik carian teks penuh MySQL diperkenalkan di sini Saya percaya teknik ini boleh membantu anda menggunakan MySQL untuk carian teks penuh dengan lebih cekap. Sememangnya, banyak lagi kemahiran dan teknik yang perlu dipelajari dan dikuasai saya harap artikel ini dapat membuka idea baru untuk anda dan memberi inspirasi lagi.
Atas ialah kandungan terperinci Teknik carian teks penuh dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!