解密搜索引擎技术实战——Lucene&Java精华版(第3版)
  • 推荐0
  • 收藏2
  • 浏览765

解密搜索引擎技术实战——Lucene&Java精华版(第3版)

罗刚 (作者) 

  • 书  号:978-7-121-28111-2
  • 出版日期:2016-03-22
  • 页  数:511
  • 开  本:16(185*260)
  • 出版状态:上市销售
  • 维护人:董英
本书是猎兔搜索开发团队的软件研发和教学实践的经验汇总。本书总结搜索引擎相关理论与实际解决方案,并给出了Java实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。
本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入浅出的介绍,并总结了实现方法。在全文检索部分,结合Lucene介绍了搜索引擎的原理与进展。用简单的例子介绍了Lucene的最新应用方法,包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。此外还进一步介绍了实现准实时搜索的方法,展示了Solr的用法以及实现分布式搜索服务集群的方法。最后介绍了在地理信息系统领域和户外活动搜索领域的应用。
本书适合需要具体实现搜索引擎的程序员使用,对于信息检索等相关研究人员也有一定的参考价值,同时猎兔搜索技术团队也已经开发出以本书为基础的专门培训课程和商业软件。
高级开发人员也可以参加猎兔的培训或者创业团队。职场人员经常面临各种压力。选择猎兔培训,不是几个月学完以后就不再见面,而是给大家提供持久的支持。当以后需要再次找工作的时候,或者需要创业时,依然可以在这里找到支持。很多商业运营的大项目失败的代价太高,所以他们往往只招有多年开发经验的工程师。但是为了成长就不要怕犯错误,在培训时可以等学员犯了错误之后再告知正确答案。有经验的工程师也可以在这里学习到完整的技术体系。
很多搜索相关的技术已经得到了初步的解决。在国内产业界也已经有很多公司掌握了基本的搜索开发技术并拥有专业的搜索技术开发人员。但是越来越多有价值的资讯对现有技术的处理能力仍然是一个挑战。
为了方便实践,需要有良好实现的代码作为参考。为了节约篇幅,书中的代码只是核心片段。本书相关代码的完整版本在附带光盘中可以找到。
作者罗刚在参加编写本书之前,还独立撰写过《自己动手写搜索引擎》一书,与王振东共同编写过《自己动手写网络爬虫》一书。经过10多年的技术积累以及猎兔搜索技术团队每年若干的研发投入,相信猎兔已经能够比以前做得更好。但越是深入接触客户的需求,越感觉到技术本身仍需要更多进步,才能满足实用的需要。写这本书也是考虑到,也许还需要更多的前进,才能使技术产生质的飞跃。
本书分为相关技术总体介绍部分、爬虫部分、全文检索部分、自然语言处理部分以及相关案例分析部分。
爬虫部分从基本的爬虫原理开始讲解,通过介绍优先级队列、宽度优先搜索等内容引领读者入门;然后根据当前风起云涌的云计算热潮,重点讲述了云计算的基本原理及其在搜索中的应用,以及Web图分析、信息抽取等内容;为了能够让读者更深入地了解爬虫,本书还介绍了有关爬虫的数据挖掘的内容。
全文检索部分重点介绍了搜索的基本原理与使用。主要介绍了开源软件实现Lucene以及Solr。不仅介绍了如何使用这些开源软件,而且还介绍了其中的一些实现原理。Lucene更高版本的改进指出了当前需要解决的问题,欢迎读者在了解基本原理后进行更深入的研究。
自然语言处理部分向来是笔者关注的重点,因为系统的智能化依赖于此。开发中文搜索离不开中文分词。开发任何自然语言的搜索也离不开对相应语言的处理。对自然语言的处理其实也可以用到对Java或C语言这样的机器语言的处理方法,只不过处理自然语言更难一点。
虽然本书的每个章节都已经用代码强化了实现细节,但是对于初学者来说,也许需要更多的案例来理解相关技术在真实场景中的用法。案例分析部分介绍了在地理信息系统领域和户外活动搜索领域的应用。股票应用案例待整理完整后再加入。
本书适合需要具体实现搜索引擎的程序员使用,对于信息检索等相关研究人员也有一定的参考价值,同时猎兔搜索技术团队也已经开发出以本书为基础的专门培训课程和商业软件。
高级开发人员也可以参加猎兔的培训或者创业团队。职场人员经常面临各种压力。选择猎兔培训,不是几个月学完以后就不再见面,而是给大家提供持久的支持。当以后需要再次找工作的时候,或者需要创业时,依然可以在这里找到支持。很多商业运营的大项目失败的代价太高,所以他们往往只招有多年开发经验的工程师。但是为了成长就不要怕犯错误,在培训时可以等学员犯了错误之后再告知正确答案。有经验的工程师也可以在这里学习到完整的技术体系。
感谢开源软件开发人员和家人、关心猎兔的老师和朋友、创业伙伴以及信赖猎兔软件的客户多年来的支持。读者可以通过QQ(270954928)联系作者,或者加QQ群(166015123)讨论相关技术问题。参与本书编写的有罗刚、张子宪、张继红、罗庭亮、高丹丹、任通通、孙宽、何淑琴、徐友峰、张进威、刘宇、石田盈,在此一并表示感谢。让我们通过合作共赢为技术发展创造更好的生态环境。

编著者

目录

第1章 搜索引擎总体结构 1
1.1 搜索引擎基本模块 1
1.2 开发环境 2
1.3 搜索引擎工作原理 3
1.3.1 网络爬虫 4
1.3.2 全文索引结构与Lucene实现 4
1.3.3 搜索用户界面 7
1.3.4 计算框架 8
1.3.5 文本挖掘 9
1.4 本章小结 9
第2章 网络爬虫的原理与应用 11
2.1 爬虫的基本原理 11
2.2 爬虫架构 14
2.2.1 基本架构 14
2.2.2 分布式爬虫架构 16
2.2.3 垂直爬虫架构 17
2.3 抓取网页 18
2.3.1 下载网页的基本方法 19
2.3.2 网页更新 23
2.3.3 抓取限制应对方法 25
2.3.4 URL地址提取 28
2.3.5 抓取JavaScript动态页面 28
2.3.6 抓取即时信息 31
2.3.7 抓取暗网 32
2.3.8 信息过滤 33
2.3.9 最好优先遍历 39
2.4 存储URL地址 40
2.4.1 BerkeleyDB 40
2.4.2 布隆过滤器 42
2.5 并行抓取 45
2.5.1 多线程爬虫 46
2.5.2 垂直搜索的多线程爬虫 48
2.5.3 异步I/O 49
2.6 RSS抓取 53
2.7 抓取FTP 55
2.8 下载图片 55
2.9 图像的OCR识别 56
2.9.1 图像二值化 57
2.9.2 切分图像 60
2.9.3 SVM分类 63
2.10 Web结构挖掘 67
2.10.1 存储Web图 67
2.10.2 PageRank算法 71
2.10.3 HITs算法 77
2.10.4 主题相关的PageRank 81
2.11 部署爬虫 83
2.12 本章小结 83
第3章 索引内容提取 86
3.1 从HTML文件中提取文本 86
3.1.1 识别网页的编码 86
3.1.2 网页编码转换为字符串编码 89
3.1.3 使用正则表达式提取数据 89
3.1.4 结构化信息提取 91
3.1.5 网页的DOM结构 94
3.1.6 使用NekoHTML提取信息 95
3.1.7 使用Jsoup提取信息 101
3.1.8 网页去噪 105
3.1.9 网页结构相似度计算 110
3.1.10 提取标题 112
3.1.11 提取日期 113
3.2 从非HTML文件中提取文本 113
3.2.1 提取标题的一般方法 114
3.2.2 PDF文件 118
3.2.3 Word文件 122
3.2.4 Rtf文件 123
3.2.5 Excel文件 134
3.2.6 PowerPoint文件 137
3.3 流媒体内容提取 137
3.3.1 音频流内容提取 138
3.3.2 视频流内容提取 140
3.4 存储提取内容 142
3.5 本章小结 143
第4章 中文分词的原理与实现 144
4.1 Lucene中的中文分词 145
4.1.1 Lucene切分原理 145
4.1.2 Lucene中的Analyzer 146
4.1.3 自己写Analyzer 148
4.1.4 Lietu中文分词 150
4.2 查找词典算法 151
4.2.1 标准Trie树 151
4.2.2 三叉Trie树 154
4.3 中文分词的原理 159
4.4 中文分词流程与结构 162
4.5 形成切分词图 164
4.6 概率语言模型的分词方法 169
4.7 N元分词方法 173
4.8 新词发现 178
4.9 未登录词识别 179
4.10 词性标注 180
4.10.1 隐马尔可夫模型 183
4.10.2 基于转换的错误
学习方法 191
4.11 平滑算法 193
4.12 本章小结 198
第5章 让搜索引擎理解自然语言 199
5.1 停用词表 200
5.2 句法分析树 201
5.3 相似度计算 205
5.4 文档排重 209
5.4.1 语义指纹 210
5.4.2 SimHash 213
5.4.3 分布式文档排重 223
5.5 中文关键词提取 223
5.5.1 关键词提取的基本方法 223
5.5.2 HITS算法应用于
关键词提取 226
5.5.3 从网页中提取关键词 228
5.6 相关搜索词 228
5.6.1 挖掘相关搜索词 229
5.6.2 使用多线程计算
相关搜索词 231
5.7 信息提取 232
5.8 拼写检查与建议 237
5.8.1 模糊匹配问题 240
5.8.2 英文拼写检查 242
5.8.3 中文拼写检查 244
5.9 自动摘要 247
5.9.1 自动摘要技术 247
5.9.2 自动摘要的设计 247
5.9.3 Lucene中的动态摘要 254
5.10 文本分类 257
5.10.1 特征提取 259
5.10.2 中心向量法 262
5.10.3 朴素贝叶斯 265
5.10.4 支持向量机 272
5.10.5 规则方法 279
5.10.6 网页分类 282
5.11 拼音转换 283
5.12 概念搜索 284
5.13 多语言搜索 292
5.14 跨语言搜索 293
5.15 情感识别 295
5.15.1 确定词语的褒贬倾向 298
5.15.2 实现情感识别 300
5.16 本章小结 301
第6章 Lucene原理与应用 303
6.1 Lucene深入介绍 304
6.1.1 常用查询对象 304
6.1.2 查询语法与解析 304
6.1.3 查询原理 308
6.1.4 分析文本 309
6.1.5 使用Filter筛选搜索结果 316
6.1.6 遍历索引库 317
6.1.7 索引数值列 318
6.2 Lucene中的压缩算法 322
6.2.1 变长压缩 322
6.2.2 PForDelta 324
6.2.3 前缀压缩 326
6.2.4 差分编码 328
6.3 创建和维护索引库 330
6.3.1 创建索引库 330
6.3.2 向索引库中添加索引文档 331
6.3.3 删除索引库中的索引文档 334
6.3.4 更新索引库中的索引文档 334
6.3.5 索引的合并 335
6.3.6 索引文件格式 335
6.4 查找索引库 338
6.4.1 查询过程 338
6.4.2 常用查询 342
6.4.3 基本词查询 343
6.4.4 模糊匹配 343
6.4.5 布尔查询 345
6.4.6 短语查询 347
6.4.7 跨度查询 349
6.4.8 FieldScoreQuery 353
6.5 读写并发控制 356
6.6 检索模型 356
6.6.1 向量空间模型 357
6.6.2 BM25概率模型 361
6.6.3 统计语言模型 367
6.7 本章小结 369
第7章 搜索引擎用户界面 370
7.1 实现Lucene搜索 370
7.2 实现搜索接口 372
7.2.1 编码识别 372
7.2.2 布尔搜索 375
7.2.3 指定范围搜索 375
7.2.4 搜索结果排序 376
7.2.5 搜索页面的索引缓存与
更新 377
7.3 历史搜索词记录 380
7.4 实现关键词高亮显示 381
7.5 实现分类统计视图 383
7.6 实现Ajax搜索联想词 388
7.6.1 估计查询词的文档频率 388
7.6.2 搜索联想词总体结构 389
7.6.3 服务器端处理 389
7.6.4 浏览器端处理 390
7.6.5 服务器端改进 395
7.6.6 拼音提示 398
7.6.7 部署总结 399
7.7 集成其他功能 399
7.7.1 拼写检查 399
7.7.2 分类统计 400
7.7.3 相关搜索 402
7.7.4 再次查找 405
7.7.5 搜索日志 405
7.8 搜索日志分析 407
7.8.1 日志信息过滤 407
7.8.2 信息统计 409
7.8.3 挖掘日志信息 411
7.9 本章小结 412
第8章 使用Solr实现企业搜索 413
8.1 Solr简介 413
8.2 Solr基本用法 414
8.2.1 Solr服务器端的配置与
中文支持 415
8.2.2 把数据放进Solr 421
8.2.3 删除数据 423
8.2.4 Solr客户端与搜索界面 424
8.2.5 Spring实现的搜索界面 425
8.2.6 Solr索引库的查找 436
8.2.7 索引分发 440
8.2.8 Solr搜索优化 442
8.3 Solr扩展与定制 445
8.3.1 Solr中字词混合索引 445
8.3.2 相关检索 447
8.3.3 搜索结果去重 449
8.3.4 定制输入输出 453
8.3.5 分布式搜索 457
8.3.6 SolrJ查询分析器 458
8.3.7 扩展SolrJ 466
8.3.8 扩展Solr 467
8.3.9 查询Web图 471
8.4 本章小结 473
第9章 地理信息系统案例分析 474
9.1 新闻提取 474
9.2 POI信息提取 479
9.2.1 提取主体 484
9.2.2 提取地区 485
9.2.3 指代消解 487
9.3 机器翻译 489
9.3.1 词对齐 490
9.3.2 翻译公司名 491
9.3.3 调整语序 493
9.4 本章小结 494
第10章 户外活动搜索案例分析 495
10.1 爬虫 495
10.2 信息提取 497
10.3 活动分类 501
10.4 搜索 501
10.5 本章小结 502
参考资料 503

读者评论

图书类别

相关图书

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh

程超 (作者)

近年来微服务架构已经成为大规模分布式架构的主流技术,越来越多的公司已经或开始转型为微服务架构。本书不以某一种微服务框架的使用为主题,而是对整个微服务生态进行系统...

¥54.00

微服务架构实战

张锋 (作者)

本书从大型网站的架构设计模式以及技术造型着手,以Spring Cloud和Docker为构建框架,实现横向可扩展的高可用架构。项目分层清晰,包括完备的质量和监控...

¥89.00

架构探险:轻量级微服务架构(下册)

黄勇 (作者)

本书将重点关注微服务基础设施方面,其中大部分内容涉及微服务运维相关技术。全书以实践的角度进行编写,读者首先将学习到轻量级微服务架构的全景视图,随后的各个章节将围...

¥79.00

Spring Cloud微服务实战

翟永超 (作者)

本书从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,本书主要以示例与源码...

¥59.00

Node.js微服务

David Gonzalez (作者) 赵震一 (译者)

本书对如何采用Node.js及其生态工具进行微服务开发的最佳实践做了全面的介绍,内容包括对微服务架构基本概念及设计原则的讲解,以及如何采用Node.js搭配Se...

¥69.00