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.