技术控:自己动手写搜索引擎全流程PDF教程,打造一个属于自己的 Google
Google 神话

1995 年,两个年轻的学生 Larry Page 和 Sergey Brin 在一点上达成了共识——从大量数
据检索信息是计算系统面临的最大的挑战之一。1996 年,他们创建了一个叫做 BackRub 的
搜索引擎。这个搜索引擎后来叫做 Google。1998 年,Page 和 Brin 在 Larry 的大学宿舍创立
Google 公司的第一个数据中心。2000 年,Google 开始成为全球最大的搜索引擎一直到现在。
2005 年,Google 股票市值超过 1000 亿美元。公司首次登陆华尔街时,“让世界更美好”便
是他们阐明的目标之一。
体验搜索引擎
你想起什么大脑没有记住的知识了吗?用搜索引擎吧。它往往不会让你失望。
事实上这正是 Google 的创始人设想的。“如果你想搜就能搜,几乎像拥有第二个大脑,
那就妙极了,”他说。就在 Brin (一直是两人中站在前台的那个)说在兴头上的时候,Page 在
不声不响地稍稍露面之后,便带着“共谋者般的微笑”溜出了房间。
但是不要感到 Google 已经完成所有的事情,没有什么事情留下来给我们做了。
下面是这本教程目录:
自己动手写搜索引擎…………………………………………………………………………….1
第 1 章 了解搜索引擎……………………………………………………………………………1
1.1Google神话……………………………………………………………….1
1.2 体验搜索引擎………………………………………………………………1
1.3 你也可以做搜索引擎…………………………………………………….4
1.4 本章小结………………………………………………………………….4
第 2 章 遍历搜索引擎技术………………………………………………………………………5
2.1 30 分钟实现的搜索引擎………………………………………………..5
-
2.1.1 准备工作环境(10 分钟)…………………………………………5 -
2.1.2 编写代码(15 分钟)………………………………………………6 -
2.1.3 发布运行(5 分钟)………………………………………………9
2.2 搜索引擎基本技术………………………………………………………..14
-
2.2.1 网络蜘蛛………………………………………………………………14 -
2.2.2 全文索引结构…………………………………………………………14 -
2.2.3 Lucene 全文检索引擎……………………………………………..15 -
2.2.4 Nutch 网络搜索软件……………………………………………….15 -
2.2.5 用户界面…………………………………………………………..17
2.3 商业搜索引擎技术介绍………………………………………………….17
-
2.3.1 通用搜索…………………………………………………………..17 -
2.3.2 垂直搜索………………………………………………………………18 -
2.3.3 站内搜索………………………………………………………………19 -
2.3.4 桌面搜索………………………………………………………………21
2.4 本章小结……………………………………………………………………..21
第 3 章 获得海量数据……………………………………………………………………………22
3.1 自己的网络蜘蛛…………………………………………………………….22
-
3.1.1 BerkeleyDB 介绍……………………………………………………27 -
3.1.2 抓取网页………………………………………………………………….28 -
3.1.3 MP3 抓取…………………………………………………………….29 -
3.1.4 RSS 抓取……………………………………………………………….30 -
3.1.5 图片抓取…………………………………………………………………33 -
3.1.6 垂直行业抓取…………………………………………………………34
3.2 抓取数据库中的内容………………………………………………………36
-
3.2.1 建立数据视图………………………………………………………….36 -
3.2.2 JDBC 数据库连接…………………………………………………….36 -
3.2.3 增量抓取……………………………………………………………….38
3.3 抓取本地硬盘上的文件……………………………………………………38
-
3.3.1 目录遍历…………………………………………………………………38
3.4 本章小结………………………………………………………………….40
第 4 章 提取文档中的文本内容………………………………………………………………..41
4.1 从 HTML 文件中提取文本 ……………………………………………..41
-
4.1.1 HtmlParser 介绍……………………………………………………..49 -
4.1.2 结构化信息提取………………………………………………….52 -
4.1.3 网页去噪………………………………………………………………….58 -
4.1.4 网页结构相似度计算…………………………………………………….61 -
4.1.5 正文提取的工具 FireBug………………………………………………62 -
4.1.6 正文提取的工具 NekoHTML………………………………………..64 -
4.1.7 正文提取………………………………………………………………….66
4.2 从非 HTML 文件中提取文本 …………………………………………….77
-
4.2.1 TEXT 文件……………………………………………………………….77 -
4.2.2 PDF 文件 ………………………………………………………………….77 -
4.2.3 Word 文件………………………………………………………………..85 -
4.2.4 Rtf 文件…………………………………………………………………86 -
4.2.5 Excel 文件…………………………………………………………..87 -
4.2.6 PowerPoint 文件…………………………………………………….88
4.3 流媒体内容提取…………………………………………………………….89
-
4.3.1 音频流内容提取………………………………………………………..89 -
4.3.2 视频流内容提取…………………………………………………………91
4.4 抓取限制应对方法…………………………………………………………..93
4.5 本章小结……………………………………………………………………….94
第 5 章 自然语言处理…………………………………………………………………………….95
5.1 中文分词处理………………………………………………………………….95
-
5.1.1 Lucene 中的中文分词……………………………………………….95 -
5.1.2 Lietu 中文分词的使用 ……………………………………………….96 -
5.1.3 中文分词的原理………………………………………………………96 -
5.1.4 查找词典算法………………………………………………………….99 -
5.1.5 最大概率分词方法………………………………………………..102 -
5.1.6 新词发现………………………………………………………………..105 -
5.1.7 隐马尔可夫模型……………………………………………………..106
5.2 语法解析树………………………………………………………………….108
5.3 文档排重……………………………………………………………………..108
5.4 中文关键词提取…………………………………………………………….110
-
5.4.1 关键词提取的基本方法………………………………………….110 -
5.4.2 关键词提取的设计……………………………………………….. 111 -
5.4.3 从网页提取关键词………………………………………………… 111
5.5 相关搜索……………………………………………………………………. 111
5.6 拼写检查………………………………………………………………114
-
5.6.1 英文拼写检查………………………………………………………….114 -
5.6.2 中文拼写检查………………………………………………………….115
5.7 自动摘要………………………………………………………………………120
-
5.7.1 自动摘要技术………………………………………………………….120 -
5.7.2 自动摘要的设计……………………………………………………….120 -
5.7.3 Lucene 中的动态摘要………………………………………….128
5.8 自动分类……………………………………………………………………..128
-
5.8.1 Classifier4J…………………………………………………………….129 -
5.8.2 自动分类的接口定义………………………………………………….131 -
5.8.3 自动分类的 SVM 方法实现………………………………………….132 -
5.8.4 多级分类………………………………………………………………….132
5.9 自动聚类…………………………………………………………………134
-
5.9.1 聚类的定义…………………………………………………………..134 -
5.9.2 K 均值聚类方法………………………………………………..135 -
5.9.3 K 均值实现…………………………………………………………….135
5.10 拼音转换……………………………………………………………………..142
5.11 语义搜索……………………………………………………………………..143
5.12 跨语言搜索………………………………………………………………….147
5.13 本章小结……………………………………………………………………..148
第 6 章 创建索引库……………………………………………………………………………149
6.1 设计索引库结构……………………………………………………………150
-
6.1.1 理解 Lucene 的索引库结构………………………………………150 -
6.1.2 设计一个简单的索引库…………………………………………….152
6.2 创建和维护索引库………………………………………………………….153
-
6.2.1 创建索引库……………………………………………………………153 -
6.2.2 向索引库中添加索引文档………………………………………….153 -
6.2.3 删除索引库中的索引文档…………………………………………155 -
6.2.4 更新索引库中的索引文档…………………………………………155 -
6.2.5 索引的合并…………………………………………………………….155 -
6.2.6 索引的定时更新………………………………………………156 -
6.2.7 索引的备份和恢复………………………………………………157 -
6.2.8 修复索引……………………………………………………158
6.3 读写并发控制………………………………………………………….158
6.4 优化使用 Lucene………………………………………………………159
-
6.4.1 索引优化…………………………………………………….159 -
6.4.2 查询优化…………………………………………………………..161 -
6.4.3 实现时间加权排序……………………………………………….166 -
6.4.4 实现字词混合索引…………………………………………….167 -
6.4.5 定制 Similarity………………………………………………..173 -
6.4.6 定制 Tokenizer………………………………………………..174
6.5 查询大容量索引………………………………………………………….176
6.6 本章小结…………………………………………………………………..177
第 7 章 用户界面设计与实现…………………………………………………………………177
7.1 Lucene 搜索接口(search 代码)……………………………………..178
7.2 搜索页面设计……………………………………………………179
-
7.2.1 用于显示搜索结果的 taglib………………………………….179 -
7.2.2 用于搜索结果分页的 taglib……………………………………181 -
7.2.3 设计一个简单的搜索页面………………………………………..183
7.3 实现搜索接口………………………………………………………..186
-
7.3.1 布尔搜索………………………………………………………….186 -
7.3.2 指定范围搜索……………………………………………….186 -
7.3.3 设置过滤条件……………………………….错误!未定义书签 -
7.3.4 搜索结果排序…………………………………………………191 -
7.3.5 搜索页面的索引缓存与更新………………………………..192
7.4 实现关键词高亮显示……………………………………………194
7.5 实现多维视图………………………………………………..196
7.6 实现相似文档搜索…………………………………………………….202
7.7 实现 AJAX 自动完成 ………………………………………………….205
-
7.7.1 总体结构………………………………………………….206 -
7.7.2 服务器端处理……………………………………………….206 -
7.7.3 浏览器端处理………………………………………………..208 -
7.7.4 服务器端改进………………………………………………..209 -
7.7.5 部署总结………………………………………………………….219
7.8 jQuery 实现的自动完成…………………………………………….219
7.9 集成其他功能……………………………………………………….225
-
7.9.1 拼写检查………………………………………………………..225 -
7.9.2 分类统计…………………………………………………..226 -
7.9.3 相关搜索………………………………………….226 -
7.9.4 再次查找……………………………………………………….229 -
7.9.5 搜索日志………………………………………………………..229
7.10 搜索日志分析………………………………………………………231
7.11 本章小结……………………………………………………………….234
第 8 章 其他高级主题…………………………………………………………………………238
8.1 使用 Solr 实现分布式搜索…………………………………………..235
-
8.1.1 Solr 服务器端的配置与中文支持………………………..235 -
8.1.2 把数据放进 Solr……………………………………………….240 -
8.1.3 删除数据…………………………………………………………243 -
8.1.4 客户端搜索界面………………………………………………..244 -
8.1.5 Solr 索引库的查找………………………………………………245 -
8.1.6 索引分发……………………………………………………….249 -
8.1.7 Solr 搜索优化……………………………………………………..249 -
8.1.8 Solr 中字词混合索引…………………………………………..252 -
8.1.9 相关检索………………………………………………………….256 -
8.1.10 搜索结果去重…………………………………………………..258 -
8.1.11 分布式搜索………………………………………………………263 -
8.1.12 SolrJ 查询分析器………………………………………………..267 -
8.1.13 扩展 SolrJ ………………………………………………………….279 -
8.1.14 扩展 Solr…………………………………………………………280 -
8.1.15 Solr 的.net 客户端……………………………………………288 -
8.1.16 Solr 的 php 客户端……………………………………….289
8.2 图片搜索……………………………………………………………….294
-
8.2.1 图像的 OCR 识别……………………………………………….295
8.3 竞价排名…………………………………………………………………299
8.4 Web 图分析 ……………………………………………………………300
8.5 使用并行程序分析数据……………………………………………305
8.6 RSS 搜索 …………………………………………………………………..306
8.7 本章小结……………………………………………………………….307
参考资源……………………………………………………………….308
-
书籍…………………………………………………………………………308 -
网址…………………………………………………………………………….308
本书中的章节和代码对照表309
PDF教程,有兴趣的学习的点击下方左下角“阅读原文“下载
夜雨聆风