Chỉ các từ và toán tử có nghĩa trong chế độ tìm kiếm Boolean. Các toán tử là:+
, -
, > <
, ( )
, ~
, *
, "
, @distance
. Sau một số nghiên cứu, tôi đã tìm thấy các ký tự của từ là gì:Chữ hoa, chữ thường, Số (chữ số) và _
. Tôi nghĩ bạn có thể sử dụng một trong hai cách tiếp cận:
-
Thay thế tất cả các ký tự không phải từ bằng dấu cách (tôi thích cách tiếp cận này hơn). Điều này có thể được thực hiện với regex:
$search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
-
Thay thế các toán tử-ký tự bằng dấu cách:
$search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
Chỉ các từ được lập chỉ mục bởi công cụ tìm kiếm toàn văn và có thể được tìm kiếm. Các ký tự không phải từ không được lập chỉ mục, vì vậy không có ý nghĩa gì nếu để chúng trong chuỗi tìm kiếm.
Tài liệu tham khảo:
- Tìm kiếm toàn văn bản Boolean
- Tinh chỉnh Tìm kiếm Toàn văn MySQL (xem:"Sửa đổi Bộ ký tự")
- PHP:preg_replace
- PHP:Thuộc tính ký tự Unicode
- PHP:Các công cụ sửa đổi có thể có trong các mẫu regex