mysql支援全文搜尋,主要是解決like查詢或其他多條件模糊查詢帶來的效能問題
以下文章內容主要介紹如何使用全文搜尋;
另外本文主要介紹5.6及5.7+以上版本,過低版本在全文索引上與引擎(myisam、innodb)有些區別就不做過多介紹了,現在應該大部分都是用5.6+版本了
介紹在mysql5.7以前版本不支援中文,同時會介紹如何支援中文的全文檢索
先介紹全文檢索配置
1、服務引數設定:可以在 my.cnf檔案中新增全文檢索最小檢索字元,預設不支援空格,各種標點符號[mysqld]
## 關鍵字最小長度
ft_min_word_len = 1
## 中文分詞最小長度,預設為2
ngram_token_size = 1
[client]
ft_min_word_len = 1
2、建立全文索引的幾種方式:
以下主要介紹集中建立全文索引的方式,可以根據實際需要應用於不同的場景
2.1 建立表時建立全文索引(如下示例)create table `test` (
`name` char(12) not null default '',
`nickname` char(12) not null default '',
fulltext key `name` (`name`,`nickname`)with parser ngram
) engine=innodb default charset=utf8mb4;
2.2 通過alter table 的方式新增alter table `table_name` add fulltext index index_name (`column_name`)
-- 或者:alter table `table_name` add fulltext index_name (`column_name`)
-- 如果是5.7且需要支援中文,請然如下(支援中文分詞的全文索引)alter table `test` add fulltext index index_name (`column_name`)with parser ngram;
2.3 直接通過create index方式create fulltext index index_name on `table_name` (`column_name`)
## 也可以在建立索引的時候指定索引的長度create fulltext index index_name on `table_name` (`column_name`(20))
3. 刪除全文索引
3.1. 直接使用 drop index(注意:沒有 drop fulltext index 這種用法)drop index username on test
3.2. 使用 alter table的方式alter table test drop index username;
4. 索引的使用
全文索引有自己的語法格式,使用 match 和 against 關鍵字select * from table_name where match(name,nickname) against('*** ***');
按布林全文搜尋模式查詢
匹配既有管理又有資料庫的記錄select * from test where match (name,nickname) against ('+資料庫 +管理' in boolean mode);
4.2 匹配有資料庫,但是沒有管理的記錄select * from test where match (name,nickname) against ('+資料庫 -管理' in boolean mode);
4.3 匹配mysql,但是把資料庫的相關性降低select * from test where match (name,nickname) against ('>資料庫 +mysql' inboolean mode);
mysql 全文索引 重建 關於MySql全文索引
從 mysql 4.0 開始就支援全文索引功能,但是 mysql 預設的最小索引長度是 4。如果是英文預設值是比較合理的,但是中文絕大部分詞都是2個字元,這就導致小於4個字的詞都不能被索引,全文索引功能就形同虛設了。國內的空間商大部 分可能並沒有注意到這個問題,沒有修改 mysql 的預設設定。為什...
mysql 全文索引 重建 mysql建立全文索引
使用索引時資料庫效能優化的必備技能之一。在mysql資料庫中,有四種索引 聚焦索引 主鍵索引 普通索引 唯一索引以及我們這裡將要介紹的全文索引 funlltext index 在mysql中,建立全文索引相對比較簡單。例如 我們有乙個文章表 article 其中有主鍵id id 文章標題 title...
mysql在全文本 MYSQL全文本搜尋
全文本搜尋 使用全文本搜尋 啟用全文本搜尋 進行全文本搜尋 使用拓展查詢 布林文字搜尋 使用全文本搜尋 為了進行全文本搜尋,必須索引被搜尋的列,而且要隨著資料的改變不斷的重新索引。對表列進行適當的改進後,mysql會自動進行所有的索引和重新索引。優點 效能快 明確控制 智慧型化的結果 啟用全文本搜尋...