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

Escape string untuk digunakan dalam pencarian teks lengkap MySQL

Hanya kata dan operator yang memiliki arti dalam mode pencarian Boolean. Operatornya adalah:+ , - , > < , ( ) , ~ , * , " , @distance . Setelah beberapa penelitian saya menemukan karakter kata apa itu:Huruf besar, Huruf kecil, Angka (digit) dan _ . Saya pikir Anda dapat menggunakan salah satu dari dua pendekatan:

  1. Ganti semua karakter non Word dengan spasi (saya lebih suka pendekatan ini). Ini dapat dilakukan dengan regex:

    $search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
    
  2. Ganti karakter-operator dengan spasi:

    $search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
    

Hanya kata-kata yang diindeks oleh mesin pencari teks lengkap dan dapat dicari. Karakter bukan kata tidak diindeks, jadi tidak masuk akal untuk meninggalkannya di string pencarian.

Referensi:



  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 MySql.Data.MySqlClient; tidak bekerja

  2. Permintaan MySQL untuk menetapkan nomor acak unik ke setiap baris

  3. Bagaimana cara mengurutkan hasil MySQL dengan huruf terlebih dahulu, simbol terakhir?

  4. Bagaimana cara mengetahui kapan kueri berhasil dieksekusi di PHP PDO?

  5. Baris mana yang dikembalikan saat menggunakan LIMIT dengan OFFSET di MySQL?