Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL 5.6 Masalah Pencarian Teks Lengkap saat Mencari kata the di PHP

Oke, saya akhirnya menemukan ini. Sepertinya saya sudah menghapus stopword myisam tetapi tidak yang innodb. Ini sedikit tetapi lebih sulit untuk dilakukan daripada untuk myisam tetapi berikut adalah langkah-langkah untuk orang lain yang mungkin membutuhkannya:

Di /etc/my.cnf Anda (atau my.ini di windows) tambahkan baris ini:

Buat tabel stopword. Saya membuat milik saya di db bernama settings dan sebuah tabel bernama innodb-stopwords . Anda tidak bisa hanya mengatur innodb_ft_enable_stopword = 0 , Anda harus membuat dan menautkan ke tabel.

Pastikan tabel Anda innodb dan tambahkan kolom bernama value , varchar(?), utf8_general_ci. Anda dapat membiarkannya kosong atau menambahkan nilai ke tabel.

innodb_ft_enable_stopword = 1  
innodb_ft_server_stopword_table = settings/innodb-stopwords

Mulai ulang server mysql Anda.

Jatuhkan dan buat ulang indeks teks lengkap Anda.

Jika Anda tidak ingin me-restart server, Anda dapat mengatur variabel secara dinamis dengan (juga memperbarui file cnf/ini untuk restart server berikutnya)

--innodb_ft_enable_stopword=1
--innodb_ft_server_stopword_table=db_name/table_name

Saya tidak melihat solusi untuk membuat ulang indeks... Anda dapat melakukannya dalam satu perintah sehingga tabel terkunci sepanjang waktu dan pengguna Anda tidak mendapatkan kesalahan:

ALTER TABLE `tablename` DROP INDEX indexname, ADD FULLTEXT(`columnname`);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda membuat daftar semua pemicu dalam database MySQL?

  2. pyodbc dan mySQL

  3. Instalasi MySQL

  4. Codeigniter Gabung dengan Berbagai Kondisi

  5. Dapatkan data pengguna tertentu di PHP