MySQL的全文搜尋

2021-09-17 04:21:27 字數 2269 閱讀 7645

mysql支援全文搜尋,主要是解決like查詢或其他多條件模糊查詢帶來的效能問題

以下文章內容主要介紹如何使用全文搜尋;

另外本文主要介紹5.6及5.7+以上版本,過低版本在全文索引上與引擎(myisam、innodb)有些區別就不做過多介紹了,現在應該大部分都是用5.6+版本了

介紹在mysql5.7以前版本不支援中文,同時會介紹如何支援中文的全文檢索

先介紹全文檢索配置

1、服務引數設定:可以在 my.cnf檔案中新增全文檢索最小檢索字元,預設不支援空格,各種標點符號

[mysqld]

ft_min_word_len = 1

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('*** ***');
4.1 按自然語言搜尋模式查詢

按布林全文搜尋模式查詢

匹配既有管理又有資料庫的記錄

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支援全文搜尋,主要是解決like查詢或其他多條件模糊查詢帶來的效能問題 以下文章內容主要介紹如何使用全文搜尋 另外本文主要介紹5.6及5.7 以上版本,過低版本在全文索引上與引擎 myisam innodb 有些區別就不做過多介紹了,現在應該大部分都是用5.6 版本了 介紹在mysql5....

MySQL的全文本搜尋

我們在使用mysql時,一般會用到兩種引擎 myisam和innodb,myisam支援全文本搜尋,但不支援事務處理 而innodb支援事務處理,但不支援全文本搜尋。一 有時,我們需要使用全文本搜尋,例如 要搜尋文字中存在指定的某個詞,且以這個詞出現的順序排序。先建立支援全文本搜尋的表 create...

mysql中文全文搜尋

centos6 xampp1.7.7 mysql5.5 opt lampp bin mysql uroot ppassword mysql show variables like plugin dir 外掛程式路徑 opt lampp lib mysql plugin wget tar zxvf m...