MySQL 8.0 全文检索功能 根据中文字符检索相关数据

解决方案

创建表

使用fulltext说明将titlebody两列的数据加入全文检索的索引列中

CREATE TABLE `text` (
  `id` int NOT NULL AUTO_INCREMENT,
  `title` varchar(50) DEFAULT NULL,
  `body` longtext,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `title` (`title`,`body`) /*!50100 WITH PARSER `ngram` */ 
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

插入数据

insert into text (title, body) values 
('金缕衣', '劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。'),
('送别', '山中相送罢,日暮掩柴扉。春草明年绿,王孙归不归。'),
('春晓', '春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。'),
('江雪', '千山鸟飞绝,万径人踪灭。孤舟蓑笠翁,独钓寒江雪。'),
('何满子', '故国三千里,深宫二十年。一声何满子,双泪落君前。');

MySQL 8.0 全文检索功能 根据中文字符检索相关数据_第1张图片

 全文检索相关功能


#用 natural language 模式 包含 金缕衣 这三个中文的 相关字段
SELECT
	* 
FROM
	text 
WHERE
	MATCH ( title, body ) against ( '金缕衣' IN NATURAL LANGUAGE MODE );

#用 bool 模式 查看即包含“三千”又包含“二十” 这二个中文的 相关字段
SELECT
	* 
FROM
	text 
WHERE
	MATCH ( title, body ) against ( '+三千 +二十' IN boolean MODE );

MySQL 8.0 全文检索功能 根据中文字符检索相关数据_第2张图片

MySQL 8.0 全文检索功能 根据中文字符检索相关数据_第3张图片

你可能感兴趣的:(数据库相关,mysql,全文检索,数据库)