前段时间,突然接到产品需求,需要对站内的职位进行关键字搜索,我们的产品是一个建筑行业的求职招聘平台,系统每天会新增大量的职位,职位信息也比较复杂,如果使用like模糊查询,在性能上肯定承受不了。

mysql的中文全文搜索实践(一)

 

    经过分析,想到了采用mysql的全文索引,但是mysql自带的全文索引不支持中文搜索,因为中文与英文不同,在分词处理上,较为复杂。如果要使用mysql的全文索引,索引字段就不能直接存储中文。

    最后再想一想,还有一种巧妙的解决办法,可以先将要搜索的内容经过中文分词处理,得到以空格分隔的词组,再对词组进行汉字编码,将分词并编码后的字符串存储在索引字段中,同时在搜索处理时,也先对搜索关键词进行分词并编码,这样就可以使用mysql的全文搜索。

    总结一下,大致是这样:

    1.建立全文索引表。

    2.在搜索前,先对要搜索的内容进行中文分词,unicode编码,再将编码字符串存储到全文索引表中。

    3.在搜索时,也对搜索关键词进行中文分词,unicode编码,直接用编码的关键词进行全文搜索。

    先介绍一个思路,在整个思考过程中,没少使用搜索引擎,看了很多介绍,但自己在实践中总会遇到不同的问题,下篇再详细介绍具体过程。