啟用布林模式
SELECT * FROM articles
WHERE MATCH (title, body) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
布林模式特點
- 無 50% 門檻限制
- 不按相關性排序(結果順序不固定)
- 可無全文索引工作(極慢,全表掃描)
- 受
ft_min_word_len、ft_max_word_len、停用詞影響
操作符完整對照表
| 操作符 | 名稱 | 功能 | 範例 |
| + | 必須包含 | 該詞必須出現在結果每行 | +MySQL |
| - | 必須排除 | 該詞絕不可出現 | -YourSQL |
| (無) | 可選 | 預設行為,有則相關性高 | MySQL |
| > | 提高權重 | 增強該詞對相關性影響 | >turnover |
| < | 降低權重 | 減弱該詞對相關性影響 | <strudel |
| () | 分組 | 子表達式分組,可巢狀 | +(>turnover |
| ~ | 否定權重 | 降噪,含該詞行排名靠後但不排除 | ~noise |
| * | 截斷/後綴 | 匹配該詞開頭所有詞(須置於詞尾) | apple* |
| " " | 精確短語 | 匹配完整短語,順序一致,標點可忽略 | "some words" |
實用範例解析
| 查詢字串 | 語義 |
| 'apple banana' | 包含 apple 或 banana 至少一個 |
| '+apple +juice' | 同時包含 apple 和 juice |
| '+apple Macintosh' | 必含 apple,含 Macintosh 者排名更高 |
| '+apple -Macintosh' | 必含 apple,排除含 Macintosh |
| '+apple +(>turnover | 必含 apple,且含 turnover 或 strudel;含 turnover 權重更高 |
| 'apple*' | 包含 apple、apples、applesauce、applet 等 |
| '"some words"' | 精確包含 "some words" 短語 |
進階技巧
- 組合使用:
+title:mysql +body:tutorial(MySQL 5.1+ 支援欄位限定)
- 動態生成:應用層根據使用者輸入組裝布林查詢字串
- 效能:大量資料務必建立 FULLTEXT 索引,否則全表掃描不可接受