博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搜索引擎学习总结
阅读量:2342 次
发布时间:2019-05-10

本文共 2327 字,大约阅读时间需要 7 分钟。

1) 搜索引擎的发展史

1-1) 第一代:文本检索

1-2)第二代:连接分析

这一代以google的PageRank为最大代表,主要分析链接见得关系

1-3) 第三代:用户中心

这一代主要是分析用户行为,以理解用户为最大目标

2) 搜索引擎基本构成

  • 索引
  • 索引压缩
  • 排序: 最重要的两个因素:
    • 搜索的相关性
    • 网页内容的重要性
  • 连接分析
  • 反作弊
  • 云存储
  • 爬虫
  • 网页去重
  • 缓存

这里写图片描述

3) 网络爬虫

这里写图片描述

互联网页面可以分为5个部分:

* 已下载页面集合
* 过期页面集合
* 待下载页面集合
* 可知页面集合
* 不可知页面集合

这里写图片描述

爬虫可划分为三类:

* 批量型 (Batch Crawler): 抓取比较明确的范围和目标。
* 增量型 (Incremental Crawler): 不断抓取,及时更新。
* 垂直型 (Focused Crawler): 抓取某个特定主题内容。

3-1) 抓取策略

3-1-1) 宽度优先遍历策略 (Breath First)

这里写图片描述

3-1-2) 非完全PageRank策略 (Partial PageRank)

就是对已经下载的网页应用PageRank算法,得到需要下载的URL和顺序。

3-1-3) OCIP策略 (Online Page Importance Computation)

OCIP就是在线页面重要性计算,可以看做是PageRank的一种改进算法。在算法开始之前,每个页面都有一个相同的cash值,每当下载一个页面,就把cash值平均分配各页面的中的连接,把自己的cash值清空,然后根据cash的大小排序,形成带抓取的页面。

3-1-4) 大站优先策略 (Larger Sites First)

以网站为抓取单位,大网站优先。

3-2) 网页更新策略

3-2-1) 历史参考策略

该策略建立在:过去频繁更新的网页,以后也会频繁更新,所以为了估计出网页合适更新,可以通过历史更新情况来判断。这种方法通常利用泊松过程对网页变化建模。

3-2-2) 用户体验策略

也就是用户越先看到的网页,越先更新。就是根据网页重要度来更新,因为越重要的网页越排在最前面,而用户搜索一个主题之后,会看的网页结果基本都是前面的。

3-2-3) 聚类抽样策略

把不通的网页分类,然后对每个类别进行采样分析更新频率,通过得到的该频率来设定这一类网页的更新周期。

这里写图片描述

3-3) 暗网抓取 (Deep Web Crawling)

也就是一般不再连接中的网页或是数据。 比如机票查询,酒店信息查询等需要输入查询条件,然后在数据库中组合数据的信息。

3-3-1) 组合输入

Google提出了富含信息查询模板 (Informative Query Templates) 技术。原理:把每一个查询条件作为一个维度,然后一维度一维度的累加查询,只到最后查询出来的内容大多数重复或相同内容,则停止。重复或相似内容越少,则说明包含的信息越丰富,即称为富含信息。

Google的这个算法ISIT,和数据挖掘里面的Apriori很像。

3-4) 分布式爬虫

分布式爬虫一般分为3个层级:

* 分布式数据中心
* 分布式服务器
* 分布式爬虫程序

这里写图片描述

3-4-1) 主从式分布爬虫 (Master-Slave)

主从分布式爬虫,其中有一台专门负责分配URL连接的服务器,并且处理带抓取URL,以及负责抓取服务器的负载调度。

Google早期就是采用这种架构,但是URL分配服务器容易形成瓶颈。

这里写图片描述

3-4-2) 对等分布式爬虫 (Peer to Peer)

对等分布式爬虫没有URL分配服务器,每台服务器都是一样的。具体URL分配问题,是通过对域名Hash后取模,然后分配到相应的服务器。(Mercator 爬虫采用次架构)。

为了解决Hash取模的问题,UbiCrawler爬虫提出了一致性哈希方法 (Consistent Hash) 来确定分配工作。

4) 搜索引擎索引

4-1) 索引基础

4-1-1) 单词-文档矩阵

单词-文档矩阵是表达两者之间包含关系的一种概念模型。

这里写图片描述

搜索引擎索引其实就是单词-文档矩阵的具体数据结构。可以有不通的方法来实现这个,比如倒排索引,签名文件,后缀树等方式。但是各项试验数据显示,倒排索引是最佳实现。

4-1-2) 倒排索引基本概念

倒排索引的一些基本术语:

  • 文档 (Document)
  • 文档集合 (Document Collection)
  • 文档编号 (Document ID)
  • 单词编号 (Word ID)
  • 倒排索引 (Inverted Index): 是实现单词-文档矩阵结构的一种具体形式,主要包含 单词词典和倒排文件
  • 单词词典 (Lexicon)
  • 倒排列表 (Posting List):记录了出现过某个单词的所有文档列表以及单词在该文档中的位置信息,每条记录称为一个倒排项 (Posting).
  • 倒排文件 (Inverted File): 所有单词的到排列表顺序的记录在倒排文件中,这个也是存储倒排索引的物理文件。

这里写图片描述

4-1-3) 倒排索引简单实例

文档集合:

这里写图片描述

最简单的到排列表:

这里写图片描述

带词频的到排列表:

这里写图片描述

带词频和位置信息的倒排列表:

这里写图片描述

4-2) 单词词典

单词词典主要未来维护所有出现过的单词和相关信息,以及单词对应的到排列表在倒排文件中的位置。

所以用来构建单词词典的数据结构,查找效率非常重要,一般使用哈希表+链表和树形结构。

4-2-1) 哈希表+链表

这里写图片描述

4-2-2) 树形结构

这里写图片描述

4-3) 到排列表 (Posting List)

这里写图片描述

在实际系统中,不存在实际的文档标号,而是存储文档差值(D-Gap). 这样以便节约空间。

这里写图片描述

4-4) 建立索引

你可能感兴趣的文章
Python说:常见的数据分析库有哪些
查看>>
Python教程:Python数据类型之字典
查看>>
Python基础教程:python的数据类型
查看>>
Python学习教程:另辟蹊径,appium抓取app应用数据了解一下
查看>>
周董新歌《说好不哭》上线,20W评论,歌迷都说了些啥
查看>>
Python学习教程:用Python进行金融市场文本数据的情感计算
查看>>
Python爬虫:python获取各种街拍美图
查看>>
爬虫工程师是干什么的?你真的知道吗?
查看>>
写给那些想学Python的人,建议收藏后细看
查看>>
数据全裸时代,你的隐私有多容易获取?
查看>>
分析http代理报错问题
查看>>
Python编程学习笔记 - 列表的各种姿势
查看>>
Python学习教程:Python入门笔记整理
查看>>
天了噜,居然用Python查到了女神的姓名
查看>>
常用排序算法总结
查看>>
Java输入输出
查看>>
MSSQL数据库常见问题
查看>>
Java8 Lambda
查看>>
JAVA面试700问
查看>>
数据库DDL,DML,DCL,TCL
查看>>