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:
-
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); -
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:
- Penelusuran Teks Lengkap Boolean
- Fine-Tuning Pencarian Teks Lengkap MySQL (lihat:"Modifikasi Kumpulan Karakter")
- PHP:preg_replace
- PHP:Properti karakter Unicode
- PHP:Kemungkinan pengubah dalam pola regex