Rumah  >  Artikel  >  pangkalan data  >  Teknik carian teks penuh dalam MySQL

Teknik carian teks penuh dalam MySQL

WBOY
WBOYasal
2023-06-15 17:33:352586semak imbas

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:

  1. Padankan perkataan mengikut susunan: Secara lalai, MySQL akan menganggap kata kunci yang dicari sebagai satu perkataan dan mengisihnya mengikut padanan terbaik. Jika anda ingin memadankan berbilang perkataan mengikut susunan, anda boleh menggunakan petikan berganda untuk mengelilingi perkataan. Contohnya, untuk menanyakan semua artikel yang mengandungi "MySQL" dan "pangkalan data" dalam teks, anda boleh menggunakan arahan berikut:
SELECT * FROM articles WHERE MATCH(content) AGAINST('"MySQL database"' IN BOOLEAN MODE);
  1. Gunakan padanan corak Boolean: MySQL menyediakan pertanyaan corak Boolean, yang boleh Kami mencari data dengan lebih fleksibel. Contohnya, untuk mencari semua artikel yang mengandungi "MySQL" tetapi bukan "pangkalan data" dalam teks, anda boleh menggunakan arahan berikut:
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.

  1. Laraskan ukuran persamaan: Secara lalai, MySQL menggunakan ukuran persamaan berdasarkan kekerapan perkataan untuk menentukan persamaan antara teks. Walau bagaimanapun, dalam beberapa kes mungkin perlu untuk melaraskan ukuran persamaan, contohnya, apabila mencari lirik muzik, kami memberi lebih perhatian kepada padanan berbanding kekerapan perkataan. Untuk melaraskan ukuran persamaan, anda boleh menentukan IN MOD BAHASA SEMULAJADI DENGAN parameter PENGEMBANGAN QUERY dalam parameter fungsi TERHADAP. Contohnya:
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!

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