MYSQL 百万条记录全文检索中文解决方案

来源:互联网 发布:c语言点滴 epub 编辑:程序博客网 时间:2024/05/01 12:33

MYSQL最适合用于小型运用的开发。遇到了单表上百万记录。用select * from xxx where xxx like '%xxx%';去查询,结果效率低到难以忍受。五十万条记录竟然用了三十秒才出结果!这对于任何运用都是没办法忍受的。对应大数据量查询的时候,很多数据库是支持全文检索的。

首先我的表默认是:innoDB,这种表的类型不支持全文检索,所以要先改变其类型为MyISAM。

 alter table song engine=MyISAM;

然后要在对应的要进行查找的字段上面建立全文检索的索引:

alter table add fulltext index(xxx);

如果要同时对多个字段进行检索可以这样:

alter table add fulltext index(xxx,xxxx);

这样做好以后呢,就可以对表进行全文检索了,速度提升是飞一般的感觉啊!现在的结果是秒出啊。可以这样去检索字段:

select * from xxx where match(xxx) against('nnn') ;

或者多字段:

select * from song where match(xxx,xxx) against('nnn');

 但是,其实这个时候中文是没办法得到结果的!应为MYSQL目前只支持英文字符的全文搜索,这又叫我蛋疼了一下。后来看到一个论文说是按照把中文转化为拼音,就可以用英文检索对中文进行检索了。看了一下拼音的思路以后我就有了一个注意,在表里面为每一个需要检索的字段对应添加一个拼音字段,检索的时候直接对拼音检索就可以了

0 0