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

Batasan pengindeksan teks lengkap Mysql?

Tentu saja tidak!

Istilah pencarian apa pun yang murni terdiri dari kata-kata yang diblokir akan gagal secara diam-diam. Kata-kata dapat diblokir karena batasan panjang min/maks dan/atau file stopword.

Saya menemukan file stopword default terlalu agresif, itu mencegah banyak pencarian yang valid. Juga panjang minimum default 4 sangat sering digunakan untuk akronim yang mungkin ingin dicari orang. Saya mengurangi ft_min_word_len menjadi 3 dan menghapus stoplist sepenuhnya (ft_stopword_file=''). Dok:http://dev.mysql.com /doc/refman/5.1/en/fulltext-fine-tuning.html

Anda juga dapat memeriksa kueri penelusuran untuk melihat apakah kueri tersebut hanya berisi <4 huruf, dan kembali ke penelusuran LIKE dalam kasus tersebut. Tidak ada cara mudah untuk mengatasi stoplist di level aplikasi.

Pemilihan 'karakter kata' mungkin tidak memenuhi kebutuhan Anda, dan sulit untuk diubah. Misalnya mencari "Terry" tidak akan cocok dengan "Terry". Secara umum tidak ada dukungan untuk jenis stemming apa pun, jadi "biskuit" juga tidak akan cocok dengan "biskuit".

Akhirnya, seperti yang disebutkan cg, tidak ada dukungan untuk InnoDB. Di zaman sekarang ini, Anda tidak ingin meletakkan semua data Anda di tabel MyISAM.

Jika Anda memiliki penyimpanan cadangan, yang dapat Anda lakukan adalah meletakkan versi data kanonik utama dalam tabel InnoDB, lalu membuat tabel MyISAM terpisah yang berisi salinan konten teks bebas, murni untuk digunakan sebagai umpan pencarian. Anda memang harus memperbarui kedua tabel pada suatu perubahan, tetapi jika tabel MyISAM kehilangan integritas maka setidaknya Anda hanya kehilangan kemampuan untuk menelusuri baris yang bersangkutan, alih-alih mengacaukan data langsung yang sebenarnya dan mendapatkan kesalahan aplikasi.

Anda kemudian dapat, jika Anda memiliki waktu luang, menerapkan pemrosesan teks Anda sendiri pada kata kunci pencarian dan kueri untuk mengatasi beberapa batasan di atas. Misalnya, Anda dapat menghindari karakter yang Anda inginkan menjadi karakter kata, menghapus karakter yang tidak Anda inginkan menjadi karakter kata, dan melakukan stemming bahasa Inggris manual sederhana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 'jika ada' kesalahan

  2. Mysql otomatis menambahkan awalan ke bidang

  3. MySQL IFNULL () Dijelaskan

  4. Cara memangkas tiga karakter pertama berdasarkan huruf pertama (ekspresi) sebelum dimasukkan ke dalam database

  5. Cara Membuat Urutan di MySQL