mysql的中文全文搜索实践(二)
在前一篇文章中,分析出了一个实现的具体思路,主要是利用中文分词、Unicode编码来解决无法使用mysql的全文索引进行中文搜索的问题,本篇文章中将详细介绍中文分词的实现方法。首先是解决中文分词,中文分词就是将一句中文进行拆分,得到一个个单一的词,如“高薪诚聘注册造价工程师”这句话,经过分词处理后,会得到“高薪 诚聘 注册 造价 工程师”一个个单一的词。网上对中文分词的技术有很多介绍,有很好的开源产品和服务接口。但是结合我们产品用的主流开发语言是PHP,所以还是偏向选择了一个支持PHP模块扩展的开源中文分词系统scws,便于直接整合进项目中进行调用。
至于如何安装scws和生成php模块,不是本文介绍的重点,请参考官方文档,有很详细的介绍。
安装好scws并生成php的模块后,就可以直接调用scws提供的api进行中文分词了,下面是一个用php调用scws进行中文分词的方法,可以用来测试中文分词。
function ch_word_segment($text) {
$so = scws_new(); //创建并返回一个SimpledCWS类操作对象
$so->set_charset('utf8'); //设定分词词典、规则集、欲分文本字符串的字符集
$so->set_multi(SCWS_MULTI_SHORT | SCWS_MULTI_DUALITY); //设定分词返回结果时是否复式分割,这里设定短词和二元词
$so->send_text($text); //发送要分词的文本
$result = $so->get_result();//返回分词结果
$first = true;
foreach ($result as $key => $value) {
if ($first) {
$word.=$value;
$first = false;
} else {
$word.=' ' . $value;//返回值为以空格分隔的分词字符串
}
}
return $word;
} 如果安装成功,运行以下代码,将得到“高薪 诚聘 注册 造价 工程师”的输出。
print(ch_word_segment('高薪诚聘注册造价工程师'));
页:
[1]