- 创建表是直接创建fulltext索引
CREATE TABLE address (
id INT PRIMARY KEY AUTO_INCREMENT,
realname VARCHAR(255),
mobile VARCHAR(255),
province VARCHAR(255),
city VARCHAR(255),
area VARCHAR(255),
FULLTEXT ( province , city,area ) WITH PARSER NGRAM
) ENGINE=INNODB CHARACTER SET UTF8;
- 在原表上新增fulltext索引
ALTER TABLE `address` ADD FULLTEXT INDEX `real`(`realname`, `city`, `province`, `detail`) WITH PARSER `ngram`;
如果原表已存在,则得先删除再新增,不能直接alert修改
ALTER TABLE `address`
DROP INDEX `real`,
ADD FULLTEXT INDEX `real`(`realname`, `city`, `province`, `detail`) WITH PARSER `ngram`;
查询时用法
SELECT
*
FROM
address1
WHERE
MATCH (realname , city,province) AGAINST ('广东和北京' IN natural language MODE );
#自然语言模式 IN natural language MODE 搜索项被转换为ngram值的并集,会拆分成 “广东”,“东和”,“和北”,“北京”这样进行搜索获取结果
#布尔模式 IN BOOLEAN MODE 搜索中,搜索项被转换成ngram短语搜索,只会搜索出包含“广东和北京”的记录
网友评论