首页 » 建站技术 » 浏览内容

通过MySQL全文搜索实现中文的相关搜索


2008-09-05 10:57:32 18,887 0 发表评论 字体: 作者:C.K.
标签: mysql

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

关键字:MySQL 全文检索 全文索引 中文分词 二元分词 区位码 相似度

注:本文使用的MySQL版本为:MySQL 4.0.x

在MySQL4中,是已经开始支持全文检索(索引)的了。但是只是对英文支持全文检索。
由于英文在书写上的特殊性,使得分词算法相对中文来说,简单得多。一般来说,我们可以通过单词与单词之间的空格,以及标点符号来完成这个分词过程。
但是就中文来说,就没有那么简单。MySQL无法对中文做出正确的分词,假设有如下英文句子:

“Hello world! Hello PHP!”

通过上面提及的方法,可以很简单的把这个句子分词为:

1 Hello
2 world
3 PHP
我们再来看看中文的句子:

“你好世界,你好PHP!”

按照英文的算法,分词如下:

1 你好世界
2 你好PHP
显然是不能满足我们的需要的。

所以,首先我们要做的是,把中文的句子转变为MySQL眼中的英文,以便使得它能以英文分词算法去对句子进行正确的分词处理。
先将上面中文句子进行标点过滤处理,得到以下句子:

你好世界 你好PHP
接着再使用中文分词中较简单实现的二元分词算法对句子进行二元分词,得到以下句子:

你好 好世 世界 你好 PHP
因为把标点符号替换为空格,以及PHP本身为英文字母的关系,可以不用进行二元切分,所以得到上面句子。
这个时候,我们来看看处理过后的句子,会发现,就其书写格式上来说,已经符合英文的书写格式,既以空格,标点来对单词形成自然间隔。只是上面句子没有标点,只有空格而已。
到此,我们已经成功的将中文“翻译”为MySQL能理解的“英文”书写格式。

1 2 3 4 5 6 7 8 9 10

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5038 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14050186 位访客

广告区 Guǎng Gào