开发者学堂课程【Lucene知识精讲与实战(下):Lucene优化(分词器的选择)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/701/detail/12354
Lucene优化(分词器的选择)
一、选择合适的分词器
1、不同的分词器分词执行效果不同,所用时间也不同
2、标准分词器 StandardAnalyzer ,对中文字词不好,但是执行速度很快,测试。去掉优化磁盘 io 的问题,StandardAnalyzer 对于小100万条的数据,需要7725ms ,如果换成 ikanalyzer 分词器,对于中文的分词效果比较好,因为有中文的寓意分析功能,在中文分词器中会加入大量预测型的算法,看哪几个字可以分成一个词,如果 ikanalyzer 分词器还会加载 resources 目录下扩展词典文件和停用词典文件。停用词典中出现的词都会被过滤掉,扩展词典中的词都会被强制分成一个词,ikanalyzer 的执行效率没有 StandardAnalyzer 执行效率快,因为 ikanalyzer 的功能更为强大。
3、测试 ikanalyzer 的执行效率,创建索引,消耗时间为19215ms,如果用StandardAnalyzer 在没经过任何优化的情况下,执行速度是 7725ms,虽然 ikanalyzer 创建索引时所花费的时间比 StandardAnalyzer 长,但是在企业中愿意用 ikanalyzer ,因为对中文分词效果良好,所以企业不是以效率,磁盘 ioio ,时间选择用什么,只是参考的参数之一,做出来的效果也是供架构师参考的因素。
4、虽然 StandardAnalyzer 切分词速度快过 IKAnalyzer ,但是由于 StandardAnalyzer 对中文支持不好,所以为了追求好的分词效果,为了追求查询时的准确率,也只能用 IKAnalyzer 分词器, lKAnalyzer 支持停用词典和扩展词典,可以通过调整两个词典中的内容,来提升查询匹配的精度。