欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

全文索引的使用(MySQL)

程序员文章站 2022-07-01 09:20:12
...

全文索引的使用(MySQL)

全文索引的使用与其他索引不同,在查询语句中需要使用match(列名) against(要搜索的词)来检索数据;


一、全文解析器


全文索引中基本单位是“词”。分词,全文索引是以词为基础的,MySQL默认的分词是所有非字母和数字的特殊符号都是分词符。在检索数据时给定的检索条件也是词;

MySQL中默认的全文解析器不支持中文分词。如果数据含有中文需要更换全文解析器ngram;


二、使用全文索引


Select 投影列 from 表名 where match(全文索引列名) against(“搜索内容”)

(一)修改 emp8 表,为 content 列创建名为 emp8_content_full 的全文索引

Alter table emp8 add fulltext emp8_content_full(content);

(二)向 emp8 表中插入一条数据 content 的值为”hello,bjsxt”

Insert into emp8(content) values(“hello,bjsxt”)

(三)查询 emp8 表中内容包含 bjsxt 的数据。

Select * from emp8 where match(content) against(“bjsxt”)

三、更换全文解析器


在创建全文索引时可以指定ngram解析器
Alter table 表名 add fulltext 索引名(列名) with parser ngram

(一)删除 emp8 表中的 emp8_content_full 全文索引

Drop index emp8_content_full on emp8;

(二)修改 emp8 表,为 content 列添加名称为 emp8_content_full 的全文索引, 并指定
ngram全文解析器。

Alter table emp8 add fulltext emp8_content_full(content) with parser ngram;

(三)向 emp8 表中添加一条数据 content 值为”你好,北京尚学堂”

Insert into emp8(content) values(“你好,北京尚学堂”)

(四)查询 emp8 表中内容包含”北京尚学堂”的数据

Select * from emp8 where match(content) against(“北京尚学堂”)