《自制搜索引擎》

《自制搜索引擎》 《自制搜索引擎》

  • 书名:《自制搜索引擎》
  • 分类:编程
  • 作者:[日]山田浩之,[日]末永匡
  • 出版社:人民邮电出版社
  • 出版年:2016-1
  • 售价:39.00元
  • 装订:平装
  • 页码:208

《自制搜索引擎》 内容介绍:

《自制搜索引擎》聚焦于Google和Yahoo!等Web搜索服务幕后的搜索引擎系统,首先讲解了搜索引擎的基础知识和原理,接着以现实中的开源搜索引擎Senna/Groonga为示例,使用该引擎的源代码引导读者亲自体验搜索引擎的开发过程。这部分讲解涉及了倒排索引的制作和压缩、检索的处理流程以及搜索引擎的优化等内容。又简单介绍了一些更加专业的搜索引擎的知识和要点,为读者今后进一步学习打下了基础。本书适合所有对搜索引擎感兴趣的技术人员阅读。

作者[日]山田浩之,[日]末永匡介绍:

山田浩之(作者) 信息工程学博士。先后于日本IBM、雅虎从事分布式搜索引擎的研发工作。目前在东京大学生产技术研究所从事高性能并行数据库的研发工作。 末永匡(作者) 开源搜索引擎Senna/Groonga的开发者。每天都在奋斗,梦想着能创建一个更加自由、更加无拘无束的,而不是一家独大的应用程序平台。 胡屹(译者) 多年从事Web开发工作。热爱编程,关注设计模式,致力于提升软件开发的质量。曾获得SCJP和PHP ZCE证书。译有《计算机是怎样跑起来的》。

《自制搜索引擎》 目录大纲:

第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个字符的查询也能检索出结果  29
获取以特定字符开头的词元的列表  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


微信扫一扫关注公众号

0 个评论

要评论图书请先登录注册

你也许想看:

Django Design Patterns and Best Practices

《Django Design Patterns and Best Practices》

Arun Ravindran.Packt Publishing - ebooks Account.2015-3-26

“”

Python袖珍指南

《Python袖珍指南》

Mark Lutz.中国电力出版社.2015-1

“”

Java夜未眠

《Java夜未眠》

蔡学镛.电子工业出版社.2003-4

“本书是一本散文集。作为一名资深程序设计师,作者走笔清新面独特,简练俏皮的文字下,是作者对工作,对人生的理性思考。书中收录...”

Scheme and the Art of Programming

《Scheme and the Art of Programming》

George Springer,Daniel P. Friedman.Mit Pr.1989-10

“”

.NET本质论 第1卷:公共语言运行库

《.NET本质论 第1卷:公共语言运行库》

博克斯 (BoxDon).中国电力出版社.2004-1

“本书由10章组成,探讨了CLR即公共语言运行库,涵盖了基本类型、实例、方法调用和消息、AppDomain、安全、以及CL...”

Java TCP/IP Socket编程

《Java TCP/IP Socket编程》

Kenneth L. Calvert,Michael J. Donahoo.机械工业出版社.2009-1

“《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行...”

ASP.NET MVC 5 高级编程

《ASP.NET MVC 5 高级编程》

Jon Galloway,Brad Wilson,K. Scott Allen,David Matson.清华大学出版社.2015-2-1

“使用MVC 5创建动态的、数据驱动的网站 作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的W...”

iOS开发进阶

《iOS开发进阶》

唐巧.电子工业出版社.2015-1-1

“《iOS开发进阶》分工具、实践、理论三大部分。第一部分介绍iOS 开发的常用工具,第二部分介绍iOS开发中的一些常见的实...”

Eloquent Ruby

《Eloquent Ruby》

Russ Olsen.Addison-Wesley.2011-2

“It's easy to write correct Ruby code, but to gain the fluenc...”

跟老齐学Python

《跟老齐学Python》

齐伟 编著.电子工业出版社.2016-2

“《跟老齐学Python:从入门到精通》是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步...”

时间触发嵌入式系统设计模式

《时间触发嵌入式系统设计模式》

Michael J.Pont.中国电力出版社.2004-7-1

“”

Coding Freedom

《Coding Freedom》

E. Gabriella Coleman.Princeton University Press.2012-11-25

“Who are computer hackers? What is free software? And what do...”

Introducing iOS 8

《Introducing iOS 8》

Steve Derico.O'Reilly Media.2014-9

“With Early Release ebooks, you get books in their earliest f...”

Starting Out with Python

《Starting Out with Python》

Gaddis, Tony.Addison-Wesley.2011-3

“In Starting Out with Python ® , Second Edition Tony Gaddis’ ...”

Learning Cython Programming

《Learning Cython Programming》

Philip Herron.Packt Publishing.2013-9-25

“”

OS X and iOS Kernel Programming

《OS X and iOS Kernel Programming》

Ole Henry Halvorsen,Douglas Clarke.Apress.2011-12-16

“OS X and iOS Kernel Programming combines essential operating...”

Practical Java中文版

《Practical Java中文版》

(美)Peter Haggar.中国电力出版社.2003-1

“本书出自第一线JAVA编程专家之手,为读者展现正确、高效、强固之JAVA代码实践方案。 这本取材广泛的掼,以不同层级的专...”

Professional IOS Network Programming

《Professional IOS Network Programming》

Jack Cox,Nathan Jones,John Szumski..2012-10

“Learn to develop iPhone and iPad applications for networked ...”

sed与awk

《sed与awk》

(美)多尔蒂,(美)罗宾斯.机械工业出版社.2003-8

“本书在一开始就给出一个概述和指南,论述了从grep到sed再到awk不断改进的功能。sed和awk具有相同的命令行语法,...”

Is Parallel Programming Hard, And, If So, What Can You Do About It?

《Is Parallel Programming Hard, And, If So, What Can You Do About It?》

Paul E. McKenney..

“The purpose of this book is to help you understand how to pr...”