MySQL提供全文索引功能,可以方便地對文本內容進行搜索。全文索引只能對MyISAM和InnoDB存儲引擎的表生效。
在使用全文索引之前,需要創建全文索引,使用以下SQL語句:
ALTER TABLE table_name ADD FULLTEXT(fulltext_column_name)
其中,table_name為需要創建全文索引的表名,fulltext_column_name為需要被索引的列名。一個表可創建多個全文索引,但每個全文索引只能包含一個或多個被索引的列。
創建完全文索引后,可以使用MATCH AGAINST語句進行搜索:
SELECT * FROM table_name WHERE MATCH (fulltext_column_name) AGAINST ('search_term')
其中,table_name為需要搜索的表名,fulltext_column_name為被索引的列名,search_term為需要搜索的關鍵詞。
FULLTEXT的搜索功能支持布爾全文搜索、自然語言全文搜索、短語全文搜索等方式。可以在MATCH AGAINST中指定搜索方式,例如:
SELECT * FROM table_name WHERE MATCH (fulltext_column_name) AGAINST ('search_term' IN BOOLEAN MODE);
BOOLEAN MODE方式支持AND、OR、NOT等邏輯操作符。
還可以在MATCH AGAINST中指定搜索的最小字符數和停用詞,例如:
SELECT * FROM table_name WHERE MATCH (fulltext_column_name) AGAINST ('search_term' WITH QUERY EXPANSION);
WITH QUERY EXPANSION會返回額外的搜索結果,并可以排除掉停用詞和短詞。
MySQL的全文索引在實際應用中能夠提高搜索效率和精度,但需要注意的是,全文索引不適用于所有表和場景,需要根據實際情況進行使用。