Tôi nghĩ bạn muốn sử dụng Tìm kiếm toàn văn bản Boolean
Nếu bạn khớp không có toán tử + - chống lại chẳng hạn như green red blue tất cả các hàng được trả về, trong đó bản ghi chứa ít nhất một từ:green hoặc red hoặc blue .
IN BOOLEAN MODE và không có toán tử, mỗi từ phù hợp sẽ đạt điểm 1 . Vì vậy, nếu có một bản ghi khớp với hai trong số ba từ, nó sẽ đạt điểm 2 .
Để nhận các hàng có ít nhất 2 điểm:
SELECT *,
MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE) `score`
FROM `my_tab` WHERE
MATCH (`TextToCheckIn`) AGAINST ('green red blue' IN BOOLEAN MODE)
HAVING `score` >= 2
ORDER BY `score` DESC
Trong chế độ Ngôn ngữ tự nhiên tính điểm hoạt động hoàn toàn khác nhau. Hãy nghĩ rằng nó chủ yếu dựa trên BM25 .
Trên bộ dữ liệu lớn, tìm kiếm toàn văn bản boolean (sử dụng chỉ mục văn bản đầy đủ
) thường hoạt động tốt hơn REGEXP hoặc LIKE cho đến nay nếu các từ phù hợp với đâu đó trong văn bản. Chỉ sử dụng like / regexp để đối sánh từ đầu chẳng hạn như REGEXP '^word' hoặc LIKE 'word%' - nếu một chỉ mục có thể được sử dụng.