《图灵程序设计丛书 自制搜索引擎》PDF下载

  • 购买积分:9 如何计算积分?
  • 作  者:(日)山田浩之,(日)末永匡著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2016
  • ISBN:9787115411709
  • 页数:191 页
图书介绍:本书聚焦于Google和Yahoo!等Web搜索服务幕后的搜索引擎系统,首先讲解了搜索引擎的基础知识和原理,接着以现实中的开源搜索引擎Senna/Groonga为示例,使用该引擎的源代码引导读者亲自体验搜索引擎的开发过程。在这部分讲解中涉及了倒排索引的制作和压缩、检索的处理流程以及搜索引擎的优化等内容。最后又简单介绍了一些更加专业的搜索引擎的知识和要点,为读者今后进一步学习打下了基础。

第1章 搜索引擎是如何工作的 1

1-1理解搜索引擎的构成 3

什么是搜索引擎 3

构成搜索引擎的组件 4

与搜索引擎相关的组件 5

1-2实现了快速全文搜索的索引结构 7

全文搜索的两种方法 7

倒排索引的结构 8

倒排索引的构建方法 9

倒排索引中的术语 10

1-3深入理解倒排索引 12

倒排索引=词典+倒排文件 12

从倒排索引中查找单词 13

将单词的位置信息加入倒排文件中 13

从倒排索引中查找短语 14

1-4制作中文文档的倒排索引 16

分割中文句子的方法 16

权衡分割方法 17

1-5实现倒排索引 19

实现词典 19

实现倒排文件 22

1-6使用倒排索引进行检索 24

布尔检索 24

使用倒排索引的检索处理流程 24

关联度的计算方法 26

信息检索中的检索 27

1-7构健倒排索引 29

使用内存构建倒排索引 29

使用二级存储构建倒排索引 29

静态索引构建和动态索引构建 32

1-8准备要检索的文档 34

收集数据 34

数据规范化 35

第2章 准备全文搜索引擎的检索样本 37

2-1全文搜索引擎wiser 39

wiser的构成 39

准备用于检索的文档 40

2-2安装wiser 42

构建wiser 42

启动wiser 43

解压缩Wikipedia的副本 44

2-3运行wiser 45

构建倒排索引 45

使用倒排索引查询 46

比较grep和wiser的运行速度 46

第3章 构建倒排索引 49

3-1复习有关倒排索引的知识 51

提取词元 51

为每个词元创建倒排列表 53

3-2构建倒排索引 54

在存储器上创建倒排列表 54

倒排列表和倒排文件的数据结构 54

从源代码级别梳理倒排索引的构建顺序 56

进一步阅读源代码 59

专栏 根据实际情况设计搜索引擎(系统) 68

第4章 开始检索吧 71

4-1检索处理的大致流程 73

充分理解检索处理的流程 73

4-2使用倒排索引进行检索 75

从源代码级别梳理检索处理的流程 75

解读split_query_to_ tokens()函数的具体实现 76

使用具体示例加深对检索处理流程的理解 77

解读函数search_docs()的实现细节 80

解读函数search_phrase()的实现 84

专栏 如何实现标签检索 88

第5章 压缩倒排索引 89

5-1压缩的基础知识 90

压缩倒排索引的好处 90

专栏 压缩的目的 90

倒排索引的压缩方法 91

倒排文件的压缩方法 91

压缩的原理 94

5-2实现wiser中的压缩功能 97

压缩功能源代码的概要 97

了解无需进行压缩时的操作 99

抓住Golomb编码的要点 101

解读Golomb编码中的编码处理 105

解读Golomb编码的解码处理 108

第6章 挑战wiser的优化及参数的调整 113

6-1提高检索处理的效率 115

优化检索处理 115

将查询分割为无重复部分的词元序列 116

6-2禁用短语检索 119

分析对2字符的字符串进行检索时的行为 119

分析对3字符的字符串进行检索时的行为 120

6-3改变检索结果的输出顺序 122

作为检索结果排序核心的指标 122

按照文档大小降序排列的检索结果 124

专栏 排名欺诈 128

6-4让1个字符的查询也能检索出结果 129

获取以特定字符开头的词元的列表 129

合并检索到的结果 131

专栏 如何实现相似文档的检索 131

6-5调整控制倒排索引更新的缓冲区容量 133

确认由缓冲区容量的差异带来的不同效果 133

用sar命令分析负载 134

6-6调整只有英文字母的词元的分割方法 135

如何避免用英文单词检索时准确率下降的问题 135

如何判断某字符是否属于索引对象 135

修改负责分割词元的函数 136

6-7确认压缩的效果 138

观察Golomb编码的效果 138

对比压缩启用前后的索引大小 138

专栏 避免滥用全文搜索引擎 139

第7章 为今后更加深入的学习做准备 141

7-1 wiser没能实现的功能 143

倒排索引之外的全文搜索索引 143

高效处理大规模数据的存储器 143

利用缓存提高检索的速度 143

使用各种各样的压缩方法 144

优化搜索结果的排名 144

调整准确率和召回率 145

降低检索结果排序处理的负载 147

并行处理 147

结合对属性的筛选过滤 148

分面搜索 148

专栏 时延和吞吐量 149

7-2全文搜索引擎Groonga的特点 150

通过词元的部分一致检索提升召回率 150

使用内存映射文件 151

片段 152

专栏 宣传活动的重要性 152

7-3实现出考虑到用户意图的搜索引擎 153

引入停用词 153

应对词素解析的错误 153

专栏 断句错误 154

处理全角字符和半角字符 155

对查询进行归一化 156

留意布尔检索的解析过程 156

通过词素解析器适当地解析查询 157

对错误的输入进行修正 157

输入补全 158

建议用户检索相关的关键词 159

7-4收集、提取文档时的要点 160

制作爬虫时的处理要点 160

在提取文本时需要处理的要点 163

Appendix附录 165

A-1 深度话题 166

近几年的压缩方法 166

动态索引构建 169

分布式索引 174

A-2 wiser中的文本提取和存储 178

用于处理XML的2种API——DOM和SAX 178

提取文档的标题和正文 179

掌握状态的迁移 182

构建文档数据库 187

后记 191