《Lucene 原理与代码分析完整版》.pdf
文本预览下载声明
Lucene 原理与代码分析原理与代码分析
原理与代码分析原理与代码分析
觉先觉先 (forfuture1978)
觉先觉先
博客博客::
博客博客::
/forfuture1978
/forfuture1978/
/
邮箱邮箱::
邮箱邮箱::
forfuture1978@
目录目录
目录目录
目录 2
第一篇:原理篇 9
第一章:全文检索的基本原理 10
一、总论 10
二、索引里面究竟存些什么 13
三、如何创建索引 14
第一步:一些要索引的原文档(Document)。 14
第二步:将原文档传给分次组件(Tokenizer)。 14
第三步:将得到的词元(Token)传给语言处理组件(Linguistic Processor)。 15
第四步:将得到的词(Term)传给索引组件(Indexer)。 16
1. 利用得到的词(Term)创建一个字典。 16
2. 对字典按字母顺序进行排序。 17
3. 合并相同的词(Term)成为文档倒排(Posting List)链表。 18
四、如何对索引进行搜索? 20
第一步:用户输入查询语句。 21
第二步:对查询语句进行词法分析,语法分析,及语言处理。 21
1. 词法分析主要用来识别单词和关键字。 21
2. 语法分析主要是根据查询语句的语法规则来形成一棵语法树。 21
3. 语言处理同索引过程中的语言处理几乎相同。 .. 22
第三步:搜索索引,得到符合语法树的文档。 22
第四步:根据得到的文档和查询语句的相关性,对结果进行排序。 23
1. 计算权重(Term weight)的过程。 24
2. 判断 Term 之间的关系从而得到文档相关性的过程,也即向量空间模型的算法
(VSM) 。 25
第二章:Lucene 的总体架构 29
2
第二篇:代码分析篇 34
第三章:Lucene 的索引文件格式 35
一、基本概念 35
二、基本类型 38
三、基本规则 39
1. 前缀后缀规则(Prefix+Suffix) 39
2. 差值规则(Delta) 40
3. 或然跟随规则(A, B?) 41
4. 跳跃表规则(Skip list) 42
四、具体格式 44
4.1. 正向信息 44
4.1.1. 段的元数据信息(segments_N) 44
4.1.2. 域(Field)的元数据信息(.fnm) 60
4.1.3. 域(Field)的数据信息(.fdt,.fdx)
4.1.3. 词向量(Term Vector)的数据信息(.tvx,.tvd,.tvf) 69
4.2. 反向信息 72
4.2.1. 词典(tis)及词典索引(tii)信息 72
4.2.2. 文档号及词频(frq)信息 74
4.2.3. 词位置(prx)信息 78
4.3. 其他信息 79
4.3.1. 标准化因子文件(nrm) 79
显示全部