1. 程式人生 > >MYSQL學習筆記(十四)使用全文字搜尋

MYSQL學習筆記(十四)使用全文字搜尋

1.啟用全文字搜尋支援
在CREATE TABLE語句建立表時,使用FULLTEXT;也可在稍後指定(所有已有資料必須立即索引)
2.進行全文字搜尋
SELECT ——
FROM ——
WHERE Match(——) Against(‘——’);
Match指示針對指定的列進行搜尋,Against指定其括號裡的詞作為搜尋文字
傳遞給Match()的值必須與FULLTEXT()定義中的相同,如指定多列,需按順序列出
全文搜尋不區分大小寫,除非使用BINARY方式
此搜尋返回以文字匹配的良好程度排序的資料,在文字前面出現或次數多的等級高
3.使用查詢擴充套件
SELECT ——
FROM ——
WHERE Match(——) Against(‘——’ WITH QUERY EXPANSION);
查詢拓展將進行兩次全文字搜尋,第一次找出與搜尋條件匹配的行,第二次找出相關有用詞的行,並按匹配程度排序
4.布林文字搜尋
即使沒有FULLTEXT索引也可使用布林文字搜尋
布林方式需提供要匹配的詞、要排斥的詞、排列提示(詞的重要程度)、表示式分組等
SELECT ——
FROM ——
WHERE Match(——) Against(‘——’  IN BOOLEAN MODE);
若Against後的空填heavy,與未指定布林方式結果相同
若填heavy -rope*,仍然匹配heavy,但排除包含rope*(以rope開頭的詞)
5.全文字布林操作符
+包含,詞必須存在
-    排除,詞必須不出現
>   包含,而且增加等級值
< 包含,且減少等級值
()把片語成字表達式(允許子表示式作為一組被包含、排除、排列等)
~取消一個詞的排序值
* 詞尾的萬用字元
“”定義一個短語(匹配整個短語以便包含或排除這個短語)
示例: ‘rabbit bait’搜尋匹配包含rabbit和bait中至少一個詞的行
  ‘“”rabbit bait”’搜尋匹配短語rabbit bait
  ‘>rabbit <carrot’增加前者等級,降低後者等級
  ‘+safe +(<combination)’搜尋匹配safe和combination,降低後者等級
6.全文字搜尋的使用說明
(1)索引全文字資料時短詞(3個或3個以下字元)被忽略且從索引中排除,此數值可更改
(2)MYSQL帶有一個內建的費用次(stopword)列表,全文字搜尋總被忽略。若需要,可覆蓋這個列表
(3)許多詞出現頻率很高,無意義的詞,若一詞出現在50%以上的行,則將它作為一個非用詞忽略。50%規則不用於布林方式
(4)如果表中行數少於三行,則全文字搜尋不返回結果
(5)忽略詞中的單引號,如don’t索引為don’t
(6)不具有詞分隔符(包括日語和漢語)的語言不能恰當返回全文搜尋結果