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