新零售-中文分词技术

一、MySQL的全文索引(不推荐)

1、前言

MySQL的全文检索功能,既支持英文,也支持中文。

但很遗憾的是,英文分词一点问题没有,但中文分词上的处理就非常糟糕。

MySQL全文索引不能按照语义对中文进行分词,只能按照字符切词。一句中国话,MySQL会切分出许多无意义的词汇。

2、MySQL全文索引的使用

(1)给字段添加全文索引

ALTER TABLE product_sku ADD FULLTEXT INDEX `title` (`title`);

(2)执行全文检索查询

MySQL 的全文检索关键词是 “match ... against”

举例:

SELECT id,title,price FROM product_sku WHERE MATCH(title) AGAINST("华为mate40");;

(3)MySQL全文索引的缺点

  • 中文字段创建全文索引,切词结果太多,占用大量内存空间

  • 更新字段内容时,全文索引不会更新,必须定期手动维护

  • 在数据库集群中,维护全文索引难度非常大

  • 搜索结果不准确,可能明明有数据,但搜索不到结果(比如华为mate 40 Pro 白色,如果搜索“华为mate白色”就搜索不到,必须得添加空格才可能搜索到)

二、使用专业的全文检索引擎(推荐)

最著名的是Lucene、ElasticSearch、Sphinx

这几个全文检索搜索引擎都有比较完整的文档,因此这里不做过多介绍。