前面我们已经知道了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中文转换成拼音代码》