mysql全文索引不支持中文的解决方案

时间:2016-09-03
前面我们已经知道了mysql全文检索的原理以及分词技巧,同时也知道mysql全文检索只支持英文,那么中文该如何来检索呢?其基本思路是把中文转换为英文,具体实现请看下面更多内容。

前面我们已经知道了mysql全文检索的原理以及分词技巧,同时也知道mysql全文检索只支持英文,那么中文该如何来检索呢?

其基本思路是把中文转换为英文,这里要用到两个表,一个是原始内容表,一个是原始内容转换为英文后的表(也叫索引表),它的搜索过程是这样的:先对 用户输入的信息进行分词,然后把这些词转换为英文,这样就可以利用mysql的全文检索对检索表进行匹配,得出id再从原始内容表查询。

下面来说下两种mysql中文检索的方案:

分别建一个内容表、一个内容索引表

CREATE TABLE IF NOT EXISTS `news` (     
 `id` int(8) NOT NULL auto_increment,     
 `content` varchar(100) default NULL,     
 PRIMARY KEY  (`id`),     
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ; 
/*  http://www.manongjc.com/article/1444.html */
CREATE TABLE IF NOT EXISTS `news_index` (     
`id` int(8) NOT NULL auto_increment,     
`nid` int(8) NOT NULL,     
`key` text,     
PRIMARY KEY  (`id`)     
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;  

1、将中文转换为base64编码

$data = '我要坚持学php';     
$data = base64_encode($data); //返回的结果就是编码后的字符串,这里省略了分词这个步骤 

但是这种方式有个缺点,当用户搜索拼音的时候检索不出结果;

2、将中文转换为拼音

网上有很多将中文转换为拼音的源码,具体如何实现大家可以网上搜索《php中文转换成拼音代码》