Lucence底层原理浅析
Lucence简介
Lucence是全Java实现的,前几年实现了开源,性能较高,而且支持分词、各种查询(正则、模糊、前缀)、关键词高亮等。
Lucence整体步骤
生成文档—>建索引库—>解析查询—>检索并返回
(1)原始数据即待索引文件,经过Tokenizer进行分词处理,去掉停用词(如"a",“the”,“an”,“啊”,“了"等),英文单词还需要Stemming和lemmatization使词汇成为词根形式(如"cars"变为"car”,“drove"变为"drive”)
(2)将词法处理后的结果创建索引,索引原理是倒排索引,创建形式是词典—>倒排表
(3)将创建好的索引放入内存
(4)将内存中的索引信息放入磁盘,保证索引的安全
(a)查询语句也经过Tokenizer进行分词,去掉停用词,英文单词也需要Stemming和lemmatization使词汇成为词根形式
(b)将一个个词放入语法树中进行语法分析(lucene AND learned NOT hadoop形成的语法树如下:)