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

Bagaimana Anda mendapatkan pencarian boolean Fulltext Anda untuk mengambil istilah C++?

Anda harus mengubah gagasan MySQL tentang apa itu kata.

Pertama, panjang kata minimum default adalah 4. Ini berarti bahwa tidak ada istilah pencarian yang hanya berisi kata-kata <4 huruf yang akan cocok, baik itu 'C++' atau 'cpp'. Anda dapat mengonfigurasi ini menggunakan ft_min_word_len opsi konfigurasi, mis. di my.cfg Anda:

[mysqld]
ft_min_word_len=3

(Kemudian hentikan/mulai MySQLd dan bangun kembali indeks teks lengkap.)

Kedua, '+' tidak dianggap sebagai huruf oleh MySQL. Anda dapat membuatnya menjadi huruf, tetapi itu berarti Anda tidak akan dapat mencari kata 'ikan' dalam string 'ikan+keripik', jadi diperlukan beberapa kehati-hatian. Dan itu tidak sepele:itu membutuhkan kompilasi ulang MySQL atau meretas set karakter yang ada. Lihat bagian awal “Jika Anda ingin mengubah kumpulan karakter yang dianggap sebagai karakter kata...” di bagian 11.8.6 dari dokumen.

Ya, sesuatu seperti itu adalah solusi umum:Anda dapat menyimpan data 'asli' Anda (tanpa melarikan diri) di tabel utama yang definitif — biasanya menggunakan InnoDB untuk kepatuhan ACID. Kemudian tabel MyISAM tambahan dapat ditambahkan, yang hanya berisi kata-kata yang rusak untuk umpan pencarian teks lengkap. Anda juga dapat melakukan bentuk stemming terbatas menggunakan pendekatan ini.

Kemungkinan lain adalah untuk mendeteksi pencarian yang tidak dapat dilakukan MySQL, seperti pencarian yang hanya berisi kata-kata pendek, atau karakter yang tidak biasa, dan kembali ke pencarian LIKE atau REGEXP yang sederhana namun lambat untuk pencarian tersebut saja. Dalam hal ini Anda mungkin juga ingin menghapus daftar berhenti dengan menyetel ft_stopword_file ke string kosong, karena tidak praktis untuk mengambil semuanya sebagai spesial juga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa saya masih membutuhkan Konektor MySQL diinstal pada komputer meskipun memiliki paket NuGet yang tepat?

  2. Mysql:Setel rangkaian karakter kolom

  3. Php mysql untuk melakukan tugas setelah 30 detik

  4. Kode Kesalahan:1222. Pernyataan SELECT yang digunakan memiliki jumlah kolom yang berbeda

  5. mysqld:Tidak dapat mengubah dir menjadi data. Server tidak dimulai