Bạn sẽ phải thay đổi ý tưởng của MySQL về một từ là gì.
Thứ nhất, độ dài từ tối thiểu mặc định là 4. Điều này có nghĩa là không có cụm từ tìm kiếm nào chỉ chứa các từ có <4 chữ cái sẽ khớp, cho dù đó là ‘C ++’ hay ‘cpp’. Bạn có thể định cấu hình điều này bằng cách sử dụng ft_min_word_len tùy chọn cấu hình, ví dụ. trong my.cfg của bạn:
[mysqld]
ft_min_word_len=3
(Sau đó dừng / khởi động MySQLd và xây dựng lại các chỉ mục đầy đủ.)
Thứ hai, ‘+’ không được MySQL coi là một ký tự. Bạn có thể đặt nó thành một chữ cái, nhưng điều đó có nghĩa là bạn sẽ không thể tìm kiếm từ ‘fish’ trong chuỗi ‘fish + chips’, vì vậy bạn cần phải cẩn thận. Và nó không phải là tầm thường:nó yêu cầu biên dịch lại MySQL hoặc hack một bộ ký tự hiện có. Xem phần bắt đầu “Nếu bạn muốn thay đổi tập hợp các ký tự được coi là ký tự từ ...” trong phần 11.8.6 của tài liệu.
Vâng, một giải pháp tương tự như vậy là một giải pháp phổ biến:bạn có thể giữ dữ liệu ‘thực’ của mình (không cần thoát) trong một bảng chính, cuối cùng - thường sử dụng InnoDB để tuân thủ ACID. Sau đó, một bảng MyISAM bổ trợ có thể được thêm vào, chỉ chứa các từ bị xáo trộn cho mồi tìm kiếm đầy đủ văn bản. Bạn cũng có thể thực hiện một hình thức gốc hạn chế bằng cách sử dụng phương pháp này.
Một khả năng khác là phát hiện các tìm kiếm mà MySQL không thể thực hiện, chẳng hạn như những tìm kiếm chỉ có các từ ngắn hoặc các ký tự bất thường, và quay trở lại tìm kiếm LIKE hoặc REGEXP đơn giản nhưng chậm cho các tìm kiếm đó. Trong trường hợp này, bạn cũng có thể muốn xóa danh sách dừng bằng cách đặt ft_stopword_file thành một chuỗi trống, vì không thực tế nếu chọn mọi thứ trong đó là đặc biệt.