瞭解全文本搜尋
並非所有引擎都支援全文本搜尋 如第21章所述,MySQL支援幾種基本的資料庫引擎。並非所有的引擎都支援本書所描述的全文本搜尋。兩個最常使用的引擎為 MyISAM 和 InnoDB ,前者支援全文本搜索,而後者不支援。這就是為什麼本書中 創 建 的 多 數 樣 例 表 使 用 InnoDB , 而 有 一 個 樣 例 表( productnotes 表)卻使用 MyISAM 的原因。如果你的應用程式中需要全文本搜尋功能,應該記住這一點。
LIKE 關鍵字,它利用通配運算子來匹配文字(和部分文字)。使用 LIKE ,能夠找到包含特殊值或部分值的行(不管這些值位於列內什麼位置)。
以基於文字的搜尋作為正規表示式匹配列值的更進一步的介紹。使用正規表示式,可以編寫查找所需行的非常複雜的匹配模式。
雖然這些搜尋機制非常有用,但有幾個重要的限制。
1.效能-通配符和正規表示式符合通常要求MySQL嘗試符合表中所有行(而且這些搜尋極少使用表索引)。因此,由於被搜尋行數不斷增加,這些搜尋可能非常耗時。
2.明確控制-使用通配符和正規表示式匹配,很難(而且並不總是能)明確地控制匹配什麼和不匹配什麼。例如,指定一個詞必須匹配,一個詞必須不匹配,而一個詞僅在第一個字確實匹配的情況下才可以匹配或才可以不匹配。
3.智能化的結果-雖然基於通配符和正規表示式的搜尋提供了非常靈活的搜索,但它們都不能提供一種智能化的選擇結果的方法。例如,一個特殊字的搜尋將會傳回包含該字的所有行,而不區分包含單一符合的行和包含多個符合的行(按照可能是更好的匹配來排列它們)。類似,一個特殊詞的搜尋將不會找出不包含該詞但包含其他相關詞的行。
所有這些限制以及更多的限制都可以用全文本搜尋來解決。在使用全文本搜尋時,MySQL不需要分別查看每個行,不需要分別分析和處理每個單字。 MySQL建立指定列中各詞的一個索引,搜尋可以針對這些字詞進行。這樣,MySQL可以快速有效地決定哪些詞匹配(哪些行包含它們),哪些詞不匹配,它們匹配的頻率,等等。
以上是MySQL中的全文本搜尋簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!