当前位置: 首页 > 后端技术 > Java

搜索使用到的全文索引,对比like模糊查询,速度可提升N倍

时间:2023-04-02 02:04:35 Java

搜索中使用全文索引,与like模糊查询相比,可以提速N倍7.6之后,增加了中文分词器。比如“今天天气真好!”将“今天”、“天气”等多个词切分,然后引用到全文索引检索。CreatetablefulltextindexCreatetablefulltext_test(Id==int(11)NOTNULLAUTO_INCREMENT,==contenttextNOTNULL,tagvarchar(255),PRIMARYKEY(id),FULLTEXTKEYcontent_tag_fulltext(content,tag)//创建联合全文索引列)ENGINE=MyISAMDEFAULTCHARSET=utf8;在现有表上创建全文索引Altertablefulltext_testaddfulltextindexcontent_tag_fulltext(content,tag);注意查询的准确性。在mysql中,指定的最小长度为4,可以修改。显示像“%ft%”这样的变量;可以在MyISAM和InnoDB存储引擎中看到这两个变量的变量名和默认值//MyISAMft_min_word_len=4;ft_max_word_len=84;//InnoDBinnodb_ft_min_token_size=3;innodb_ft_max_token_size=84;修改mysql的/etc/my.cnf文件,在[mysqld]下添加内容[mysqld]innodb_ft_min_token_size=1ft_min_word_len=1重启mysql,然后重建之前建好的索引。建立索引后的匹配方式:自然语言全文索引Select*fromtestwherematch(content)against('aaaa');boolean全文索引Select*fromtestwherematch(content)against('a*'inbooleanmode);==+必须包含这个词====-不能包含这个词====>增加相关性词,查询结果较高====<降低词的相关性,查询结果较低====(*)星号通配符后面只能跟一个词==其他常用符号可以找在手册中。欢迎关注公证号:我只是码字,一起学习编程知识吧!