Trong chế độ boolean, yêu cầu các chuỗi phải có mặt (thay vì chỉ cho điểm cao hơn), được thực hiện với +
. đối sánh tiền tố được thực hiện với một *
kết thúc . Đây có vẻ là những gì bạn muốn, vì vậy hãy tìm kiếm:
+John* +S*
+John* +Smith*
+Smith* +J*
+Jo* +S*
Lưu ý rằng chỉ mục Toàn văn không thể giúp bạn tìm kiếm 'mọi nơi trong một từ'. vì vậy một cái gì đó giống như *mith*
nhất định không thành công:chúng có nghĩa là khớp với ký tự 1 trong một chỉ mục.
Nếu bạn cũng muốn sắp xếp chúng theo giá trị đối sánh và chẳng hạn, cần có John Smith
trước đây Johnny Smithson
, bạn sẽ làm điều này:
SELECT * FROM user
WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;
Cái mà bạn nhìn thấy sẽ chẳng đưa bạn đến đâu trừ khi bạn thêm tất cả các từ> =ft_min_word_len
một lần nữa riêng biệt:
+John* +S* John
+John* +Smith* John Smith
+Smith* +J* Smith
+Jo* +S*
Đối với cái cuối cùng, cả hai đều là <4 ký tự mặc định, vì vậy chúng tôi không thể thêm thông số sắp xếp cho thông số đó trong mysql mặc định, nhưng bạn có thể đặt ft_min_world_len
khác nhau được mong muốn.