Lucene (v4.5) 深入学习(一) 原理
1.Lucene的analysis 模块主要负责词法分析及语言处理而形成Term。
2.Lucene的index模块主要负责索引的创建,里面有IndexWriter。
3.Lucene的store模块主要负责索引的读写。
4.Lucene的QueryParser主要负责语法分析。
5.Lucene的search模块主要负责对索引的搜索。
6.Lucene的similarity模块主要负责对相关性打分的实现。
建索引,搜索流程与Lucene各模块的对应关系
1.Lucene的analysis 模块主要负责词法分析及语言处理而形成Term。
2.Lucene的index模块主要负责索引的创建,里面有IndexWriter。
3.Lucene的store模块主要负责索引的读写。
4.Lucene的QueryParser主要负责语法分析。
5.Lucene的search模块主要负责对索引的搜索。
6.Lucene的similarity模块主要负责对相关性打分的实现。
索引使用的数据压缩方法
主要有四种方法,这些方法在搜索引擎中都属于常见技术。这里的名称参考《Lucene原理与代码分析》。
前缀+后缀
差值
或然跟随规则
图是从《Lucene原理与代码分析》来的,不过作者的解释把问题复杂化了,还是官方文档的说明清楚明了。
官方文档直接举了个例子,例子是这样的:
一个term在文档7中出现一次,在文档11中出现3次,如何记录这些信息?如果单纯利用差值规则记录文档,应为7,4。为了节约空间,如果term只出现一次就直接依附于前面的文档编号记录,方法是使文档编号左移一位(7×2=14),并在末位置1(14+1=15)。如果出现不止一次,那么就使用另一种方法:对于文档11,同样使文档编号左移一位(4×2=8),后面的一个记录单元记录次数3。于是最后形成的文件中的记录为15, 8, 3。所以如果代表文档的数字是偶数,那么意味着后面跟着的记录单元里存放的是次数。
官方文档直接举了个例子,例子是这样的:
一个term在文档7中出现一次,在文档11中出现3次,如何记录这些信息?如果单纯利用差值规则记录文档,应为7,4。为了节约空间,如果term只出现一次就直接依附于前面的文档编号记录,方法是使文档编号左移一位(7×2=14),并在末位置1(14+1=15)。如果出现不止一次,那么就使用另一种方法:对于文档11,同样使文档编号左移一位(4×2=8),后面的一个记录单元记录次数3。于是最后形成的文件中的记录为15, 8, 3。所以如果代表文档的数字是偶数,那么意味着后面跟着的记录单元里存放的是次数。
No comments:
Post a Comment