前言 1
第1章 搜索引擎与Lucene 1
1.1 搜索引擎与Lucene简介 1
1.1.1 搜索引擎分类 1
1.1.2 Lucene项目简介 4
1.1.3 其他搜索引擎开发包介绍 5
1.2 Lucene的系统架构 7
1.2.1 Lucene最简示例 7
1.2.2 Lucene采用的索引结构 13
1.2.3 Lucene软件包架构 13
1.3 本书的章节导航 14
第2章 文档逻辑视图与文本分析 15
2.1 文档逻辑视图 15
2.2 Lucene的文本分析过程简介 19
2.3 空格解析器(WhitespaceAnalyzer) 21
2.3.1 空格分词器(WhitespaceTokenizer) 21
2.3.2 Token(标志) 23
2.4 标准解析器(StandardAnalyzer) 23
2.4.1 标准分词器(StandardTokenizer) 25
2.4.2 标准过滤器 27
2.5 打造自己的解析器 28
2.5.1 常用的中文分词法 28
2.5.2 对CJKAnalyzer的分析 28
2.5.3 构造自己的解析器 30
第3章 Lucene创建索引之一(段索引方式与倒排索引结构) 41
3.1 倒排结构与段索引方式 41
3.2 索引写入过程概述 49
第4章 Lucene创建索引之二(在内存中创建索引) 52
4.1 创建Document层面索引 52
4.2 写入field信息 55
4.3 文件倒排过程 58
4.4 填写postingTable 62
4.5 postingTable的排序过程 65
4.6 写入field名字文件(.fnm文件) 68
4.7 写入field信息文件(.fdt,.fdx文件). 70
4.8 写入频率与位置文件(.frq与.prx文件) 73
4.9 TermVector方式写入索引(.tvf,.tvd与.tvx文件) 79
4.10 字典文件(.tis与.tii文件) 87
4.11 写入规格化文件 92
第5章 Lucene创建索引之三(索引合并过程) 93
5.1 document层面的合并过程 94
5.2 field与term的合并过程 101
5.2.1 field信息合并过程 101
5.2.2 term信息合并过程 103
5.2.3 合并norm信息 117
5.3 Lunece索引采用的压缩算法 119
5.3.1 frontcoding(端部编码) 119
5.3.2 variable-byte coding(变长字节编码) 120
5.3.3 delta-coding或delta-encoding 121
5.4 小结 121
第6章 Lucene查询过程之一(查询模型与引擎预热) 123
6.1 查询模型 123
6.1.1 向量模型 123
6.1.2 布尔模型 124
6.1.3 Lucene的评分(score)方式 124
6.2 查询简单示例 125
6.3 引擎预热 127
6.3.1 获得并打开索引文件 128
6.3.2 获得segment信息 131
6.3.3 FSDirectory打开索引过程 144
6.3.4 获得field信息 148
6.3.5 获得term信息 151
第7章 Lucene查询过程之二(查询解析与语法) 156
7.1 构建查询解析器(QueryParser) 156
7.2 Lucene的查询语法 156
7.2.1 项(Term)查询 157
7.2.2 域(Field) 157
7.2.3 词条查询(Term Modifiers) 157
7.2.4 布尔操作符(Boolean Operator) 159
7.2.5 组合查询(Grouping) 161
7.2.6 针对field的组合查询(Field Grouping Field) 161
7.2.7 Escaping Special Character(转义字符) 161
7.3 Lucene查询语法树的构建过程 161
7.3.1 过程分析 162
7.3.2 语法树分析实例 165
第8章 Lucene查询过程之三(相似度匹配与算法分析) 167
8.1 查询与相似度计算 167
8.1.1 查询器(Searcher)的查询过程 168
8.1.2 查询语句的权重计算 169
8.1.3 获得topK个document 182
8.2 Lucene查询算法分析 205
8.2.1 相似度计算简单实例 205
8.2.2 线性相似度计算 207
8.2.3 基于倒排索引的相似度计算 207
8.2.4 Lucene的相似度计算 209
第9章 Lucene标引与查询全程示例 214
9.1 实例描述 214
9.2 建立索引过程 215
9.2.1 选择文档中建立索引的field 215
9.2.2 选择field录入方式 216
9.2.3 生成segment文件 216
9.2.4 生成fields文件 216
9.2.5 posting文件 217
9.2.6 合并segment index生成index文件 222
9.2.7 合并后的文件关系 233
9.3 查询过程 235
第10章 Lucene的常用应用场景分析 237
10.1 对大型XML文档集合的检索 237
10.1.1 都柏林文件介绍 237
10.1.2 XML分析器介绍 240
10.1.3 Lucene在大型XML文件中的应用 240
10.2 MultiSearcher的应用 245
10.2.1 MultiSearcher的应用 245
10.2.2 ParallelMultiSearcher的应用 249
第11章 利用Lucene构建分布式搜索引擎 251
11.1 分布式文件系统和Hadoop 251
11.1.1 Hadoop文件系统体系结构 251
11.1.2 系统交互过程:单一NameNode方式 252
11.1.3 系统组件描述 253
11.2 Nutch简单剖析 259
11.3 体验Nutch 262
附录A TestIndexWriterMerging 269
附录B TestDocumentWriter与DocHelper 271