搜索引擎基本原理

摘要:最近读了《这就是搜索引擎:核心技术详解》一书,简要作个记录。

__________________________________________________

目录

【1】搜索引擎概述

【2】搜索引擎的基础技术

【3】搜索引擎的平台基础

【4】搜索结果的改善优化

__________________________________________________

【1】搜索引擎概述

过去的15年间,互联网信息急剧膨胀,靠人工的方式去筛选获取有用信息不再可能,因此搜索引擎应运而生。根据其发展,可以将其划为四个时代。

  • 分类目录。yahoo是这个时期的代表,采用纯人工方式收集,质量较高,但效率低。
  • 文本检索。采用了经典的信息检索模型,主要查询用户关键词语网页内容相似度,收录容量增加,但质量不是很好。如,早期的AltaVista.
  • 链接分析。典型:Google的PageRank,极大扩充了网页内容,质量有提高,随之而来各种作弊方法。
  • 用户为中心?现在的大部分搜索引擎对相同查询返回相同的结果,但是不同用户可能关注不一样,未来也许更多考虑用户的差异性。

说到发展,不得不提搜索引擎的三个主要目标,无论它往何方发展,以下三个目标总是一个很好的评估标准:

  • 更全:如何把更多相关的网页收录?
  • 更快:如何从数以亿计的网页中迅速返回结果?
  • 更准:如何把用户最感兴趣的结果呈现?

【2】搜索引擎的基础技术

这一部分主要从以下四个部分来讲述搜索引擎的基础技术,这四个部分也是搜索引擎的重要环节。

  • 网络爬虫
  • 建立索引
  • 内容检索
  • 链接分析

2.1 网络爬虫

网络爬虫是搜索引擎的下载系统,它的作用是内容的获取,手段就是在万维网中通过链接不断爬取收集各类网页。但是互联网的页面浩如烟海,而且每天不断有新的内容产生,根据爬取目标和范围,可以将爬虫简单分为以下几类:

  • 批量性爬虫:明确的抓取目标和范围,达到即停止
  • 增量型爬虫:应对网页不断更新的状态,爬虫需要及时反应。通用商业引擎一般都是这类
  • 垂直型爬虫:只针对某个特定领域的爬虫,根据主题过滤。

爬虫在爬取网页的时候,应该怎样确定下一步的目标呢?主要有以下策略:

  • 宽度优先:最简单的方式,即将某个页面中的链接依次加入待爬取队列
  • 局部PageRank:PageRank是一种网页重要性指标,这种方式根据一定时期内的局部PageRank值决定下一步爬取目标
  • OPIC:当下载当前网页后,将其重要性平均分给包含的链接,每次选取最重要的页面,不用迭代计算,速度较快
  • 大站优先:思想很简单,以网站为单位衡量页面重要性。

接下来,简要介绍一下搜索引擎中的一个重要问题:暗网抓取。所谓暗网,是指常规方式很难爬到的网页,而在网络中,这样的网是大量存在的。有的网页没有外链,有的主要内容存储于数据库中(如携程网),没有链接指向这些记录。暗网挖掘是商业搜索引擎的一大研究重点,Google是这样,百度的“阿拉丁”计划也在于此。

 2.2 建立索引

对于搜索引擎,索更是其中最重要的核心技术之一,面对海量的网页内容,如何快速找到包含用户查询词的所有网页?倒排索引在其中扮演了关键的角色。

对于一个网页,我们把它看做一个文档,其中的内容由一个个单词组成。为了对于用户的搜索词快速给出文档结果,我们要建立一个单词-文档的存储结构。倒排索引是实现单词—文档矩阵的一种具体存储形式。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:单词词典和倒排文件。

单词词典主要是两种存储方式:哈希加链接和树形结构。

索引建立方法:

(1)两遍文档遍历

  在第一遍扫描文档集合时,该方法并没有立即开始建立索引,而是收集一些全局的统计信息。比如文档集合包含的文档个数N,文档集合内所包含的不同单词个数M,每个单词在多少个文档中出现过的信息DF。在获得了上述3 类信息后,就可以知道最终索引的大小,于是在内存中分配足够大的空间,用来存储倒排索引内容。在第二遍扫描的时候,开始真正建立每个单词的倒排列表信息,即对某个单词来说,获得包含这个单词的每个文档的文档ID,以及这个单词在文档中的出现次数TF

(2)排序法

  排序法对此做出了改进,该方法在建立索引的过程中,始终在内存中分配固定大小的空间,用来存放词典信息和索引的中间结果,当分配的空间被消耗光的时候,把中间结果写入磁盘,清空内存里中间结果所占空间,以用做下一轮存放索引中间结果的存储区。这种方法由于只需要固定大小的内存,所以可以对任意大小的文档集合建立索引。

(3)归并法

  在分配的内存定额被消耗光时,排序法只是将中间结果写入磁盘,而词典信息一直在内存中进行维护,随着处理的文档越来越多,词典里包含的词典项越来越多,所以占用内存越来越大,导致后期中间结果可用内存越来越少。归并法对此做出了改进,即每次将内存中数据写入磁盘时,包括词典在内的所有中间结果信息都被写入磁盘,这样内存所有内容都可以被清空,后续建立索引可以使用全部的定额内存。

索引更新策略:

  • 完全重建
  • 再合并策略
  • 原地更新策略
  • 混合策略

2.3 内容检索

内容检索模型是搜索引擎排序的理论基础,用来计算网页与查询的相关性。

常用的检索模型

  • 布尔模型
  • 向量空间模型
  • 概率模型
  • 语言模型
  • 机器学习排序

检索系统评价指标

  • 精确率:搜索结果中相关文档的比例 A/(A+B)
  • 召回率:结果中相关文档占所有相关文档的比例 A/(A+C)
  • [email protected] : 前10个结果中相关查询的数目
  • MAP指标 :对返回结果按次序加权,权值为排名的倒数
  查询相关 查询无关
在搜索结果内 A B
不在搜索结果 C D

2.4 链接分析

搜索引擎在查找能够满足用户请求的网页时,主要考虑两方面的因素:一方面是用户发出的查询与网页内容的内容相似性得分,即网页和查询的相关性;另一方面就是通过链接分析方法计算获得的得分,即网页的重要性。链接分析就是通过网络的链接结构去获取网页重要性的一类方法。

链接分析算法很多,从模型上看,主要分为两类:

  • 随机游走:从某个网页以一定的概率跳转到它所包含的链接
  • 子集传播:给予某个子集一定的传播,按照特定的条件,将权值传给其他网页

常用算法:

  • PageRank
  • HITS
  • SALSA
  • 主题敏感PageRank
  • Hilltop

【3】搜索引擎的平台基础

这一部分主要是讲搜索引擎的平台支持,主要是云存储和云计算模型。

对于商业搜索引擎,需要保存大量的数据,并且需要对这些大规模的海量数据进行处理。云存储和云计算就是为了这个问题提出的解决方案。

大量的数据不可能存在一台服务器上,它必然是分布式存储的。当数据更新时,这就会产生多个服务器上数据不一致的情况,以及如何选择服务器的问题。

我们首先先介绍一些基本原则

(1)CAP原则

CAP是Consistency,Availability,Partition Tolerance的简称,即一致性,可用性和分区容忍性。

对于一个数据系统,三个原则不能兼得。云存储往往关注CA,牺牲部分一致性。

(2)ACID原则

这是关系数据库采取的原则。它是Atomicity,Consistency,Isolation,Durability的缩写,即原子性,一致性,事务独立,持久性。

(3)BASE原则

大多云存储系统采用,它和ACID不同,牺牲了强数据一致性换取高可用性。因为用户可能对数据的变化没有能不能提供服务敏感。

它的三个方面是:

  • 基本可用: Basically Available
  • 柔性状态: Soft State,不要求随时同步
  • 最终一致性: 即若数据一致性,只要在一定时间段内达到一致即可

Google的云存储和云计算架构

云存储:

  • GFS文件系统:由主服务器(Master),Chunk服务器和GFS客户端构成
  • Chubby锁服务:针对分布式系统粗粒度的锁服务
  • BigTable:针对海量数据的结构或半结构的存储模型,本质是三维映射表,由行主键,列主键以及时间构成
  • MegaStore:适合于实时交互,而GFS和BigTable适合后台处理

云计算

  • MapReduce
  • Percolator :增量模式,作为对MapReduce的补充
  • Pregel:大规模图计算模型

其它云存储系统

  • Dynamo : Amazon
  • PNUTS : Yahoo!
  • HayStack : Facebook

【4】搜索结果的改善优化

前面讲过,搜索引擎追求的三个目标就是更快,更全,更准。但是要达到这些目标并不是一件很轻松的工作,需要很多环节的处理。这一部分主要从以下一个方面来讲讲,怎样提高搜索引擎的搜索结果,改善搜索质量,提升搜索性能。

4.1 作弊分析

作弊方法

  • 内容作弊:设置无关关键字,内容农场 (大量低质量内容)
  • 链接作弊:链接农场,互相链接...
  • 页面隐藏作弊:欺骗爬虫,隐藏无关关键字,重定向。。。
  • WEB2.0作弊

反作弊整体思路

  • 信任传播
  • 不信传播
  • 异常发现

(1)所谓信任传播模型,基本思路如下:在海量的网页数据中,通过一定的技术手段或者人工半人工手段,从中筛选出部分完全值得信任的页面,也就是肯定不会作弊的页面(可以理解为白名单),算法以这些白名单内的页面作为出发点,赋予白名单内的页面节点较高的信任度分值,其他页面是否作弊,要根据其和白名单内节点的链接关系来确定。白名单内节点通过链接关系将信任度分值向外扩散传播,如果某个节点最后得到的信任度分值高于一定阈值,则认为没有问题,而低于这一阈值的网页则会被认为是作弊网页。

(2)不信任传播模型从框架上来讲,其和信任传播模型是相似的,最大的区别在于:初始的页面子集合不是值得信任的页面节点,而是确认存在作弊行为的页面集合,即不值得信任的页面集合(可以理解为黑名单)。赋予黑名单内页面节点不信任分值,通过链接关系将这种不信任关系传播出去,如果最后页面节点的不信任分值大于设定的阈值,则会被认为是作弊网页。

(3)异常发现模型也是一个高度抽象化的算法框架模型,其基本假设认为:作弊网页必然存在有异于正常网页的特征,这种特征有可能是内容方面的,也有可能是链接关系方面的。而制定具体算法的流程往往是先找到一些作弊的网页集合,分析出其异常特征有哪些,然后利用这些异常特征来识别作弊网页。

  只要操纵搜索引擎搜索结果能够带来收益,那么作弊动机就会始终存在,尤其是在网络营销起着越来越重要宣传作用的时代尤其如此。作弊与反作弊是相互抑制同时也是相互促进的一个互动过程,“道高一尺,魔高一丈”的故事不断重演。前述内容主要是以技术手段来进行反作弊,而事实上纯粹技术手段目前是无法彻底解决作弊问题的,必须将人工手段和技术手段相互结合,才能取得较好的反作弊效果。技术手段可以分为相对通用的手段和比较特殊的手段,相对通用的手段对于可能新出现的作弊手法有一定的预防能力,但是因为其通用性,所以针对性不强,对特殊的作弊方法效果未必好。而专用的反作弊方法往往是事后诸葛亮,即只有作弊行为已经发生并且比较严重,才可能归纳作弊特征,采取事后过滤的方法。人工手段则与技术手段有很强的互补性,可以在新的作弊方式一出现就被人发现,可以看做一种处于作弊进行时的预防措施。所以从时间维度考虑对作弊方法的抑制来说,通用反作弊方法重在预防,人工手段重在发现,而专用反作弊方法重在事后处理,其有内在的联系和互补关系存在。

4.2 分析用户意图

准确分析用户的搜索意图是目前搜索引擎的重点研究方向。

用户的意图可以初略分为

  • 导航型
  • 信息型
  • 事物型

搜索日志是挖掘用户意图的重要数据来源

  • 点击图:用户在查询结果出来后点击的链接可能更是他希望的结果
  • 查询回话:用户在短时间的连续查询词存在相关性
  • 查询图:构建用户查询之间的结构关系

用户在搜索时可能想不到合适的搜索词,或者关键词输入错误,这时候就需要帮助用户澄清搜索意图。

常见的方法是:

  • 相关搜索
  • 查询纠错

4.3 网页去重

经过统计,网络中有相当比例的网页是近似相同或者完全相同的,高达29%。如果搜索返回大量相似网页,显然降低了搜索结果质量。针对这一现象,网页去重就显得十分必要。

网页去重一般是在爬虫抓取到网页后,对其建立索引之前。去重算法应该兼顾准确性和运行效率。

典型的网页去重算法:

  • 特征抽取
  • 文档指纹生成
  • 相似性计算

几种典型的去重算法:

  • Shingling算法:将文档中连续的单词序列作为特征
  • I-Match算法:先统计一个全局的特征词典,然后用单文档的特征与其比较
  • SimHash算法:可能是目前最优秀的去重算法
  • SpotSig算法

4.4 缓存机制

缓存机制可以加快用户相应速度,节省计算资源

缓存系统的目标是最大化缓存命中率和保持缓存与索引的一致性

缓存的对象主要是网页搜索结果和查询词对应的倒排列表

缓存淘汰策略主要有动态策略和混合策略

时间: 2024-11-10 00:18:32

搜索引擎基本原理的相关文章

机器学习基础——一文讲懂中文分词算法

在前文当中,我们介绍了搜索引擎的大致原理.有错过或者不熟悉的同学,可以点击下方的链接回顾一下前文的内容. ML基础--搜索引擎基本原理 在介绍爬虫部分的时候,我们知道,爬虫在爬取到网页的内容之后,会先进行一些处理.首先要做的就是过滤掉HTML当中的各种标签信息,只保留最原生的网页内容.之后,程序会对这些文本内容提取关键词. 今天我们就来讲讲关键词提取当中最重要的一个部分--中文分词. 在世界上众多的语言当中,中文算是比较特殊的一种.许多语言自带分词信息,比如英文,机器学习写作machine le

转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用

一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得成功,这个和当前的开源技术.海量数据架构有着必不可分的关系.比如我们使用mysql.nginx等开源软件,通过架构和低成本服务器也可以搭建千万级用户访问量的系统.新浪微博.淘宝网.腾讯等大型互联网公司都使用了很多开源免费系统搭建了他们的平台.所以,用什么没关系,只要能够在合理的情况下采用合理的解决方

[Search Engine] 搜索引擎技术之网络爬虫

随着互联网的大力发展,互联网称为信息的主要载体,而如何在互联网中搜集信息是互联网领域面临的一大挑战.网络爬虫技术是什么?其实网络爬虫技术就是指的网络数据的抓取,因为在网络中抓取数据是具有关联性的抓取,它就像是一只蜘蛛一样在互联网中爬来爬去,所以我们很形象地将其称为是网络爬虫技术.其中网络爬虫也被称为是网络机器人或者是网络追逐者. 网络爬虫技术是搜索引擎架构中最为根本的数据技术,通过网络爬虫技术,我们可以将互联网中数以百亿计的网页信息保存到本地,形成一个镜像文件,为整个搜索引擎提供数据支撑. 1.

搜索引擎网页排序算法

2.1基于词频统计——词位置加权的搜索引擎 利用关键词在文档中出现的频率和位置排序是搜索引擎最早期排序的主要思想,其技术发展也最为成熟,是第一阶段搜索引擎的主要排序技术,应用非常广泛,至今仍是许多搜索引擎的核心排序技术.其基本原理是:关键词在文档中词频越高,出现的位置越重要,则被认为和检索词的相关性越好. 1)词频统计 文档的词频是指查询关键词在文档中出现的频率.查询关键词词频在文档中出现的频率越高,其相关度越大.但当关键词为常用词时,使其对相关性判断的意义非常小.TF/IDF很好的解决了这个问

这就是搜索引擎(三)——搜索引擎优化

这个系列的文章是一只试图通过产品角度出发去理解复杂庞大搜索引擎的汪写出来的,不足之处很多,欢迎广大技术.非技术同学阅读后指正错误,我们一起探讨共同进步 本章主要讲的是搜索引擎的优化,包括提高搜索效率(云存储.缓存机制).提高搜索质量(网页去重.用户搜索意图识别.网页反作弊)及搜索的发展方向.这三个方面是在网页抓取&搜索排序的基础上发展起来的. 一.提高搜索效率 1.1云存储 为什么要用云存储?引擎处理数据量巨大且为无结构或半结构的数据,云存储和云计算为解决存储和管理海量数据而生的. 这里只介绍一

【SEO系列教程】第一部分:SEO概念-搜索引擎工作原理

从今天开始,二毛为大家更新SEO系列教程,今天更新第一部分:SEO概念,主要讲述如何学习SEO这门课程以及搜索引擎工作原理. 本次课程不会一五一十的讲解SEO的全部细微概念,在讲到一些我们已经熟知的SEO概念,我会一句带过,如果大家有不理解的地方,请在下面跟帖,我会第一时间恢复大家,还望谅解. 另外说明一下,SEO系列教程在每周三更新,其余时间大家可以在下面自由交流,希望这套SEO教程能够对大家的SEO学习有所帮助,请大家随时关注二毛博客最新动态,谢谢. 好了,下面我们进入正题: 今天的知识点:

搜索引擎原理与实践

编辑 随着搜索引擎技术的发展和不断完善,越来越多的人开始对搜索引擎原理和技术进行研究,越来越多的人喜欢上了搜索引擎,<搜索引擎原理与实践>一书,从教学的角度出发,全面地阐述了搜索引擎的原理和实践,包括搜索引擎的基本原理与技术.搜索引擎的数据结柳搜索引擎的爬虫.多媒体信息检索技术以及搜索引擎开发技术.该书适合高等院校计算机科学与技术专业及相关专业的高年级学生和研究生阅读参考,也适合相关领域的工程技术人员参阅. 书    名 搜索引擎原理与实践 作    者 袁津生.李群.蔡岳 ISBN 7563

Mahout 机器学习的基本原理

Mahout和Hadoop:机器学习的基本原理 这可能是现在收益最高,也是最受欢迎的一项技术之一.毫无疑问--作为开发人员,机器学习是一个能够大展身手的舞台. 计算技术通常用来分析数据,而理解数据则依赖于机器学习.多年来,对于大多数开发者来说,机器学习却是非常遥远.一直是难以企及的. 图1:机器学习的构成 机器学习是简单数据检索与存储的合理扩展.通过开发各种组件,使计算机更加智能学习和发生行为. 机器学习使得挖掘历史数据和预测未来趋势成为可能.你可能还没意识到,但的确已经在使用机器学习,并受益颇

搜索引擎综述(来自网络,图片连接…

互联网在近10年的得到飞速发展,互联网正在逐渐深入人们的生活,改变人们的生活.互联网经济也经历了风风雨雨,从缓慢起步到急速膨胀,从泡沫破灭到逐步回暖:从"网络广告"到"拇指经济",从"网络游戏"到"搜索力经济".目前,搜索引擎成为最受人们关注的焦点之一,也成为亿万富翁的制造摇篮.越来越多的公司都希望在搜索引擎这座金矿中挖到筐金子,其中许多人会选择拥有自己的搜索引擎.国内著名搜索引擎公司百度(http://www.baidu.c