1、首先要設置 ngram_token_size
一種是在啟動mysql的時候
mysqId --ngram_token_size=2
另一種是在配置文件里修改,通常是
vi /etc/my.cnf
。然后添加一句ngram_token_size=2
,然后重啟一下mysqlsystemctl restart mysqld.service
(我這環境是centos 7 ,mysql 5.7)。
2、創建全文索引。
- 創建表的同時創建全文索引
CREATE TABLE posts (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR (200),
content TEXT,
FULLTEXT (title, content) WITH PARSER ngram
) ENGINE = INNODB;
- 直接通過create index
CREATE FULLTEXT INDEX ft_index ON posts (title,content) WITH PARSER ngram;
3、搜索
- 自然語言模式
默認就是自然語言模式:
SELECT * MATCH (title,content) AGAINST ('你好') FROM posts;
也可以指定:
SELECT * MATCH (title,content) AGAINST ('你好 打工人' IN NATURAL LANGUAGE MODE) FROM posts;
- BOOLEAN 模式
BOOLEAN模式可以執行高級查詢:
SELECT * MATCH (title,content) AGAINST ('+你好 -打工人' IN BOOLEAN MODE) FROM posts;
必須包含“你好”,且不能包含“打工人”。