MySql中文全文检索的一种实现方案
在数据库中查找包含某一个关键词的内容,用SQL语句的like写起来非常简单。但是,在实际应用中,like的效率非常低,为了能满足在有大量数据的情况下快速查找的需求,我们需要对数据建立索引。
对某一特定内容的数据建立全文索引无疑有不小的工作量。但是,已经有很多人、很多工具都做了很多这方面的努力,本文讲述的就是一种利用Mysql进行中文全文检索的方案。
Mysql本身就支持全文检索,但是,目前仍然没有支持对中文进行全文检索的版本,不过我们仍然可以通过将中文转换成MySql易于识别的文字来使用这个功能。通常一个比较好的方法是先将中文分词,然后转化成为拼音或者Base64编码等用英文字符来表示的字符串。
中文分词其实是个比较难的东西,相对于英文分词来说中文分词涉及到很多人工智能方面的算法,好在现在有许多开源的中文分词库,我们在projspider项目中采用的是结巴分词,这是Python下比较常用的分词库,经过测试分词效果不错。
分词后将每个独立的词转换为拼音,将汉字转换为拼音用的是查表法,这同样也不需要自己去写,网上有许多现成的代码和对应表。
转换完成后将由拼音和分隔符组成的字符串储存在一个独立的字段,查找时同样也需要先对查找的字符串进行中文分词,然后转换为拼音,再使用match against查找。