自制搜索引擎pdf

图书网 2018年9月8日12:08:231 2.1K
摘要

2600行代码,真实体验搜索引擎的开发过程
开源搜索引擎Senna/Groonga的开发者亲自执笔
探明Google、百度背后的工作机制
专业:开源搜索引擎Senna/Groonga开发者、Yahoo!搜索引擎研发者执笔。
实战易上手:2600行代码,从零开始写一个简易搜索引擎,然后进行优化。
讲解细致:浓缩搜索引擎的关键知识点 ,源码可下载,边学习边实践。
平缓进阶:书末介绍更专业的搜索引擎技术,为读者的深入学习做准备。

自制搜索引擎 内容简介

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

自制搜索引擎 目录

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

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

什么是搜索引擎

构成搜索引擎的组件

与搜索引擎相关的组件

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

全文搜索的两种方法

倒排索引的结构

倒排索引的构建方法

倒排索引中的术语

1-3深入理解倒排索引

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

从倒排索引中查找单词

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

从倒排索引中查找短语

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

分割中文句子的方法

权衡分割方法

1-5实现倒排索引

实现词典

实现倒排文件

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

布尔检索

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

关联度的计算方法

信息检索中的检索

1-7构健倒排索引

使用内存构建倒排索引

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

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

1-8准备要检索的文档

收集数据

数据规范化

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

2-1全文搜索引擎wiser

wiser的构成

准备用于检索的文档

2-2安装wiser

构建wiser

启动wiser

解压缩Wikipedia的副本

2-3运行wiser

构建倒排索引

使用倒排索引查询

比较grep和wiser的运行速度

第3章 构建倒排索引

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

提取词元

为每个词元创建倒排列表

3-2构建倒排索引

在存储器上创建倒排列表

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

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

进一步阅读源代码

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

第4章 开始检索吧

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

充分理解检索处理的流程

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

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

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

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

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

解读函数search_phrase()的实现

专栏 如何实现标签检索

第5章 压缩倒排索引

5-1压缩的基础知识

压缩倒排索引的好处

专栏 压缩的目的

倒排索引的压缩方法

倒排文件的压缩方法

压缩的原理

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

压缩功能源代码的概要

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

抓住Golomb编码的要点

解读Golomb编码中的编码处理

解读Golomb编码的解码处理

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

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

优化检索处理

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

6-2禁用短语检索

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

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

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

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

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

专栏 排名欺诈

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

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

合并检索到的结果

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

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

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

用sar命令分析负载

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

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

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

修改负责分割词元的函数

6-7确认压缩的效果

观察Golomb编码的效果

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

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

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

7-1 wiser没能实现的功能

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

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

利用缓存提高检索的速度

使用各种各样的压缩方法

优化搜索结果的排名

调整准确率和召回率

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

并行处理

结合对属性的筛选过滤

分面搜索

专栏 时延和吞吐量

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

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

使用内存映射文件片段

专栏 宣传活动的重要性

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

引入停用词

应对词素解析的错误

专栏 断句错误

处理全角字符和半角字符

对查询进行归一化

留意布尔检索的解析过程

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

对错误的输入进行修正

输入补全

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

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

制作爬虫时的处理要点

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

Appendix附录

A-1 深度话题

近几年的压缩方法

动态索引构建

分布式索引

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

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

提取文档的标题和正文

掌握状态的迁移

构建文档数据库

后记

自制搜索引擎 精彩文摘

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

在体验搜索引擎的开发过程之前,我们先在第 1 章介绍一下搜索引擎的基本概念。搜索引擎的基础是应用于信息检索、数据库等领域的信息技术,要想开发搜索引擎,横跨多个领域的广泛知识是不可或缺的。在本章我们尽可能通俗易懂、简明扼要地总结归纳了这些知识。由于本章讲解的是后续章节的背景知识,所以恳请诸位认真地读下去。

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

在本节,我们首先介绍什么是搜索引擎,然后再大略地讲解其基本架构。由于从 1-2 节开始还会详细地讲解有关内容,所以在本节就让我们先在大体上了解一下搜索引擎的全貌吧。

什么是搜索引擎

搜索引擎是一类系统或软件的统称,作用是从文档的集合中查找(检索)出匹配信息需求(查询)的文档,信息需求是由单词、问题等构成的。

确切地说,本书所讲解的搜索引擎其实是“全文搜索引擎”。所谓的“全文”指的就是全部的句子,当检索的对象为“由文本构成的文档中的全部句子”时,对于该文档进行的检索就称为全文搜索。而实现了这种全文搜索的系统就是全文搜索引擎(全文搜索系统),在英文中一般称为 Full-text Search Engine。在本书之后的章节中,提到“搜索引擎”指的就是全文搜索引擎。

在现代的搜索引擎中,不仅能看到 Google 和 Yahoo! 等 Web 检索,还可以看到邮件检索和专利检索等各式各样的应用程序(应用层)。当然,应用程序的用途和使用方式不同,搜索引擎的规模和其所要求的系统必备条件也就不同。尽管如此,在这些应用程序中,搜索引擎的基本结构却没有太大的差异。本书将以搜索引擎的基本结构为主进行讲解。

下面,就让我们先从搜索引擎的全貌看起吧。

构成搜索引擎的组件

搜索引擎一般由以下 4 个组件构成。

索引管理器(Index Manager)

索引检索器(Index Searcher)

索引构建器(Indexer)

文档管理器(Document Manager)

图书网:自制搜索引擎pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • TUGERCCC
      TUGERCCC 9

      不错