MySQL 全文索引实现一个简单版搜索引擎( 四 )


MySQL 全文索引实现一个简单版搜索引擎

文章插图
 
5、使用全文索引搜索某个关键词
响应时间有很大的提升
MySQL 全文索引实现一个简单版搜索引擎

文章插图
 
6、注意当搜索的关键词字符数大于2 (ngram_token_size定义大小)会出现不一致问题
普通搜索 , 实际中出现该关键词的记录数为6
MySQL 全文索引实现一个简单版搜索引擎

文章插图
 
全文搜索 , 出现关键字的记录数为9443
MySQL 全文索引实现一个简单版搜索引擎

文章插图
 
实际出现该关键字的记录数为1
MySQL 全文索引实现一个简单版搜索引擎

文章插图
 
全文搜索出现该关键词的记录数为3202
MySQL 全文索引实现一个简单版搜索引擎

文章插图
 
结论当mysql 某字段中有固定的stopword 分词(英文的空格符 , 中文的“,”"-"等) , 对该字段建立全文索引 , 能快速搜索出现某个关键词的相关记录信息 , 实现简单搜索引擎的效果
当mysql 某字段没有固定的stopword 分词 , 使用内置解析器ngram 可将字段值分成固定数量(ngram_token_size定义大小)的关键词快速进行搜索;当搜索的关键词的字符数量不等于ngram_token_size定义大小时 , 会出现与实际情况不一致的问题
全文索引能快速搜索 , 也存在维护索引的开销;字段长度越大 , 创建的全文索引也越大 , 会影响DML语句的吞吐量 , 可用专门的全文搜索引擎ES来做这件事




推荐阅读