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

Pencarian wildcard di pencarian teks lengkap MySQL

Sayangnya Anda tidak dapat melakukan ini menggunakan indeks teks lengkap MySQL. Anda tidak dapat mengambil '*nited states' langsung dari indeks karena karakter kiri adalah bagian terpenting dari indeks. Namun, Anda bisa cari 'United Sta*' .

// the only possible wildcard full-text search in MySQL
WHERE MATCH(column) AGAINST ('United Sta*' IN BOOLEAN MODE)

Teks lengkap MySQL bekerja paling baik saat menelusuri seluruh kata dalam kalimat - bahkan terkadang bisa payah. Jika tidak, saya sarankan menggunakan mesin teks lengkap eksternal seperti Solr atau Sphinx . Saya pikir Sphinx mengizinkan awalan dan akhiran wildcard, tidak yakin tentang yang lain.

Anda bisa kembali ke LIKE MySQL klausa, tetapi sekali lagi, menjalankan kueri seperti LIKE '%nited states' atau LIKE '%nited Stat%' , juga akan mengalami penurunan performa, karena tidak dapat menggunakan indeks pada beberapa karakter pertama. 'United Sta%' dan 'Unit%States' tidak apa-apa karena indeks dapat digunakan untuk melawan sekelompok karakter pertama yang diketahui.

Peringatan lain yang cukup besar menggunakan pengindeksan teks lengkap MySQL adalah daftar kata berhenti dan setelan panjang kata minimum . Misalnya, pada lingkungan hosting bersama, Anda akan dibatasi pada kata-kata yang lebih besar dari atau sama dengan 4 karakter. Jadi pencarian 'Goo' untuk mendapatkan 'Google' akan gagal. Daftar stop-word juga melarang kata-kata umum seperti 'dan', 'mungkin' dan 'luar' - sebenarnya, ada 548 stop-word semuanya! Sekali lagi, jika tidak menggunakan shared hosting, pengaturan ini relatif mudah diubah, tetapi jika ya, Anda akan terganggu dengan beberapa pengaturan default.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan OR dalam LIKE Query di MySQL untuk membandingkan beberapa bidang

  2. Apa cara tercepat untuk membuang &memuat database MySQL InnoDB menggunakan mysqldump?

  3. atur ulang kata sandi root dengan konfigurasi mysql yang salah

  4. Alternatif Proxy MySQL untuk Database Sharding

  5. Uji waktu eksekusi kueri di laravel