×

SEO 搜索引擎 数据存储

《深度解析搜索引擎核心技术:索引结构与数据存储》---梳理总览

元智汇电子 元智汇电子 发表于2024-01-21 13:23:34 浏览105 评论0

抢沙发发表评论

一、搜索引擎的索引

一种类似书籍目录的结构,其主要目的是使人们能够更迅速地找到相关章节内容。简而言之,搜索引擎索引的过程包括爬虫抓取页面、整理和排列数据。索引在实现单词-文档矩阵的数据结构方面有多种方式,其中常见的是倒排索引。

搜索引擎索引的基本模型是单词-文档矩阵,横向显示哪些文档包含特定词汇,纵向显示某个文档包含哪些关键词。以下是相关基本概念:

image.png

  • 文档:任何以文件形式存在的对象。

  • 文档编号:搜索引擎内部分配的唯一标识,用于区别每个文档。

  • 单词编号:搜索引擎内部分配的唯一标识,用于区别每个单词。

  • 倒排索引(Inverted Index):实现单词-文档矩阵的一种存储形式,能够快速获取包含特定单词的文档列表。由单词词典和倒排文件两部分组成。

    image.png

  • 单词词典(Lexicon):搜索引擎通常以单词为索引单位,单词词典是包含文档集合中所有出现过的单词的字符串集合。每个索引项记录单词的信息和指向倒排列表的指针。常用的数据结构包括哈希加链表结构和树形词典结构。

  • 倒排列表(Posting List):记录某个单词在所有文档中的文档列表以及在每个文档中出现的位置信息。每个记录称为一个倒排项(Posting)。倒排列表可用于确定哪些文档包含特定单词。

  • 倒排文件(Inverted File):所有单词的倒排列表通常按顺序存储在磁盘文件中,称为倒排文件。这个文件是存储倒排索引的物理文件。在实际搜索引擎中,记录的通常不是文档编号,而是相邻两个文档的差值,以提高压缩效率。


索引建立

在搜索引擎的实际实现中,通常采用相邻两个文档之间的差值来记录信息,而不是直接记录文档编号。这种做法的目的是将较大的数值转化为较小的数值,以提高数据的压缩效率。通过记录相邻文档之间的差异,可以更有效地利用存储空间,并在搜索引擎索引中达到更高的效率。

建立索引的两遍文档遍历法是一种完全在内存中完成索引创建的方法。在第一遍扫描中,主要目的是收集统计信息,并根据这些信息进行内存和资源的分配。同时,建立单词与相应倒排列表在内存中的位置信息,进行一些必要的资源准备工作。第二遍扫描的任务则是填充倒排列表,并将结果写入磁盘。

image.png

然而,这种两遍扫描法存在一些缺点。由于从磁盘读取文档并解析文档是非常耗时的步骤,而两遍扫描法需要对文档集合进行两次遍历,因此在速度上并不具备优势。在实际应用中,采用这种方法的系统并不常见。

另一种建立索引的方法是排序法,其流程包括处理文档、中间结果排序、将排序后的中间结果写入磁盘,最后合并中间结果以生成最终的索引文件。

还有一种索引建立的方法是归并法,它包括处理文档、将内存中的数据写入磁盘、合并索引与词典,最终生成最终的索引文件。

image.png


动态索引

是一种能够实时反映索引变化的机制,其中包括三个关键的索引结构:倒排索引、临时索引和已删除文档列表。

  1. 倒排索引: 这是对初始文档集合建立的索引结构,通常单词词典存储在内存中,而相应的倒排列表则存储在磁盘文件中。

  2. 临时索引: 在内存中实时构建的倒排索引,其结构与前述的倒排索引相似,但区别在于词典和倒排列表都在内存中存储。当新文档加入系统时,会实时解析文档并追加到这个临时索引结构中。

  3. 已删除文档列表: 用于存储已被删除文档的相应文档ID,形成一个文档ID列表。这个列表帮助系统跟踪和管理已删除文档的信息。

这样的动态索引机制能够有效地反映文档集合的变化,同时通过临时索引实现对新文档的实时处理。已删除文档列表则提供了一种有效的方式来维护和追踪文档的状态,使系统能够及时处理已删除文档的信息。


索引更新策略

是针对临时索引逐渐增大,导致内存不足的情况而采取的应对措施。常用的索引更新策略包括完全重建策略、再合并策略、原地更新策略和混合策略。

  1. 完全重建策略: 将新文档的临时索引与老文档的索引合并,然后遍历生成新的索引,最终废弃老的索引。这种策略涉及对整个文档集合进行重新构建索引。

  2. 再合并策略: 将新文档的索引与老文档的索引进行合并,生成新的索引,并废弃老的索引。这个策略在执行时会合并新旧索引,而不需要重新遍历整个文档集合。

  3. 原地更新策略: 利用增量索引与老文档的索引,将老索引与新的倒排信息相结合,完成更新。这种策略允许在不废弃老索引的情况下,对索引进行增量更新。

  4. 混合策略: 通常是对单词进行分类,然后根据分类采用不同的更新策略。这样可以根据单词的特性选择更加适合的更新方式,以提高效率。

这些索引更新策略提供了灵活性,能够根据实际情况选择最适合的方式进行索引更新,以维护索引的准确性和高效性。


二、链接分析

概念模型中的随机游走模型

抽象了用户浏览行为,包括直接跳转和远程跳转。许多链接分析算法,如PageRank算法,都建立在随机游走模型的基础上。

image.png

以互联网包含三个网页A、B、C为例,它们之间的链接关系可以用有向边表示。通过这些链接关系,可以计算页面节点之间的转移概率。例如,对于节点A,只有一个出链指向节点B,因此从节点A跳转到节点B的概率为1;对于节点C,它对节点A和B都有链接指向,所以转向任意一个其他节点的概率为1/2。

考虑用户在时刻1浏览页面A,然后通过链接进入页面B,接着进入页面C。此时,用户面临两种可能选择,跳转到页面A或者页面B,两者概率相同,都为1/2。如果互联网包含更多页面,用户不想回到页面A或B,可以按照1/10的概率跳入其他任意一个页面,实现远程跳转。

另一方面,子集传播模型将互联网网页划分为两个或多个子集合,并赋予某个子集合特殊性质。许多算法通常从具有特殊性质的子集合出发,给予该子集合内网页初始权值。随后,根据特殊子集合内网页与其他网页的链接关系,以一定方式传递权值到其他网页。这种模型可帮助更好地理解和分析互联网中不同子集合之间的信息传播和链接关系。


链接分析算法

在众多算法中,PageRank和HITS算法是两个具有代表性的且最为重要的算法,许多后续的链接分析算法都是在这两者的基础上进行改进的。

image.png

  • PageRank算法通过将每个页面的当前PageRank值平均分配到该页面包含的出链上,从而为每个链接赋予相应的权值。页面将所有指向该页面的入链传递的权值求和,以获得新的PageRank得分。

  • HITS算法中,Authority页面指的是与特定领域或主题相关的高质量网页,如在搜索引擎领域中,Google和百度首页即为该领域的高质量网页。而Hub页面则是包含了许多指向高质量Authority页面链接的网页。HITS算法强调Authority和Hub之间的相互增强关系。与此不同,HITS算法与用户查询请求密切相关,而PageRank算法是一个与查询无关的全局算法。HITS的目标是通过一定技术手段,在海量网页中找到与用户查询主题相关的高质量Authority页面和Hub页面,特别是Authority页面,因为这些页面代表了能够满足用户查询的高质量内容,搜索引擎以此作为搜索结果返回给用户。

  • 另一方面,SALSA算法通过从请求开始,扩展网页子集,转为无向二分图,计算权重,最终返回结果。hilltop算法则通过专家网页搜索,对目标网页进行排序。主题敏感PageRank算法涉及离线分类主题PR值计算,而请求是通过相似度比较计算得到的,其结果为前两者的乘积之和。

image.png

对比HITS算法和PageRank算法,可以得出以下几点不同之处:

1. 与查询请求的关系:

  • HITS算法与用户输入的查询请求密切相关,而PageRank算法与查询请求无关。

  • HITS算法可独立作为相似性计算评价标准,而PageRank必须结合内容相似性计算来评价网页相关性。

2. 计算效率:

  • HITS算法需要在接收到用户查询后进行实时计算,因此计算效率较低。

  • PageRank算法可以在爬虫抓取完成后离线计算,然后在线直接使用计算结果,因此计算效率较高。

3. 计算对象数量和全局性:

  • HITS算法计算对象数量较少,只需处理扩展集合内网页之间的链接关系。

  • PageRank算法是全局性算法,需要处理所有互联网页面节点。

4. 适用场景和部署位置:

  • PageRank更适合部署在服务器端,而HITS算法更适合部署在客户端。

  • HITS算法更适合处理具体的用户查询,而PageRank在处理宽泛的用户查询时更有优势。

5. 主题泛化和处理对象分值:

  • HITS算法存在主题泛化问题,更适合处理具体的用户查询。

  • 在搜索引擎领域,更重视HITS算法计算出的Authority权值,但在其他应用领域中,Hub分值也很重要。

6. 链接反作弊角度:

  • 从链接反作弊的角度看,PageRank在机制上优于HITS算法,因为HITS算法更容易受到链接作弊的影响。

7. 算法结构稳定性:

  • HITS算法的结构相对不稳定,对扩展网页集合内链接关系的微小改变可能对最终排名产生较大影响。

  • PageRank算法相对稳定,其计算时的远程跳转是其结构稳定性的根本原因。


三、网页作弊

在网页作弊的大分类中,常见的作弊方法主要包括内容作弊、链接作弊、隐藏作弊以及近年来兴起的Web 2.0作弊方法。学术界和搜索引擎公司为了应对这些作弊手段,提出了各种反作弊算法。

内容作弊:

内容作弊的目的是通过巧妙修改或者调整网页内容,使得网页在搜索引擎排名中获得不符合其实际价值的高排名。搜索引擎排名通常包含内容相似性和链接重要性计算,而内容作弊主要针对搜索引擎排序算法中的内容相似性计算部分。这包括故意增加目标词的词频,或者在网页关键位置引入与网页内容无关的单词,以影响搜索结果排名。

常见的内容作弊手段包括关键词重复、无关查询词作弊、图片alt标签文本作弊、网页标题作弊、网页重要标签作弊以及网页元信息作弊。

内容农场:

内容农场是一种作弊方式,运营者通常以较低的成本雇佣大量自由职业者,支付他们撰写内容。然而,这些内容普遍质量较低,很多文章通过复制稍作修改而完成。内容农场运营者会研究搜索引擎的热门搜索词等信息,巧妙地将这些关键词添加到写作内容中。这样,普通搜索引擎用户在检索时可能被引导到内容农场网站,通过大量低质量内容吸引流量,从而实现内容农场赚取广告费用的目的。

image.png


链接作弊是指网站所有者为了影响搜索引擎排名,利用链接分析技术操纵页面之间的链接关系或链接锚文字,以提高链接排序因子的得分,从而影响搜索结果排名的不当手段。以下是一些常见的链接作弊手法:

链接农场(Link Farm):

链接农场旨在通过构建大量互相紧密链接的网页集合,利用搜索引擎链接算法的机制,通过大量相互的链接来提高网页排名。这些页面内的链接密度非常高,任意两个页面都可能存在互相指向的链接。

image.png

Google轰炸(Google Bombing):

Google轰炸是通过操控锚文字以影响搜索引擎排名的手法。锚文字指向某个网页的链接描述文字,通常反映了被指向网页的内容主题。作弊者通过精心设置锚文字内容,诱导搜索引擎给予目标网页较高排名。这种作弊行为通常涉及设置与目标网页内容无关的锚文字。

image.png

交换友情链接和购买链接:

一些网站所有者通过交换友情链接或购买链接的方式,试图增加网站的外部链接数量,以提高链接排序因子。这种手法旨在影响搜索引擎排名,但搜索引擎通常会对其进行监测和评估。

“门页”作弊(Doorway Pages):

“门页”是一种特殊类型的页面,不包含正文内容,而是由大量链接构成。这些链接通常指向同一网站内的其他页面。作弊者通过制造大量的“门页”来提升整个网站的排名,从而欺骗搜索引擎算法。

这些链接作弊手法试图通过操纵链接因子来影响搜索引擎排名,但搜索引擎公司采取不断改进的算法来对抗这些不当手段。


页面隐藏作弊是指通过一些手段欺骗搜索引擎爬虫,使得搜索引擎抓取的页面内容与用户实际点击查看的内容不一致,以影响搜索引擎的搜索结果。以下是常见的页面隐藏作弊方式:

  1. IP地址隐形作弊(IP Cloaking):

    网页拥有者会在服务器端记录搜索引擎爬虫的IP地址列表。当检测到是搜索引擎在请求页面时,会向爬虫推送一个伪造的网页内容;而对于其他IP地址,则推送另一种网页内容,通常是具有商业目的的营销页面。

  2. HTTP请求隐形作弊(User Agent Cloaking):

    客户端和服务器在获取网页时遵循HTTP协议,其中有一项称为用户代理(User Agent)。搜索引擎爬虫的用户代理往往具有明显的特征(例如,Google爬虫的用户代理可能是:Googlebot/2.1)。如果服务器判断请求来自搜索引擎爬虫,就会推送与用户实际看到不同的页面内容。

  3. 网页重定向:

    作弊者通过让搜索引擎索引某个页面的内容,但在用户访问时将页面重定向到另一个新页面,以达到欺骗的目的。

  4. 页面内容隐藏:

    通过一些特殊的HTML标签设置,使部分内容对用户不可见,但对搜索引擎可见。例如,将网页字体前景色和背景色设置相同,或在CSS中添加不可见层来隐藏页面内容。隐藏的内容可能包含一些与网页主题无关的热门搜索词,以增加用户访问的可能性。


四、网页反作弊

网页反作弊是当前所有商业搜索引擎需要应对的重要难题。由于商业利益的驱使,许多网站站长会分析搜索引擎排名,并采取手段来提高网站的排名。为了保证排名的公正性,搜索引擎需要识别和惩罚作弊行为。作弊与反作弊将一直是搜索引擎领域的持续斗争。学术界和搜索引擎公司已经提出了各种反作弊算法。

反作弊技术思路

从基本的思路角度看,反作弊手段可以大致划分为以下三种:信任传播模型、不信任传播型和异常发现模型。前两种技术模型可以进一步抽象为"链接分析"中提到的子集传播模型。

  1. 信任传播模型:

    通过技术手段或人工半人工手段,从数据中筛选出完全值得信任的页面(白名单)。算法以白名单内的页面作为基点,为这些页面节点赋予较高的信任度分值。根据与白名单内节点的链接关系来确定其他页面是否存在作弊行为。

  2. 不信任传播模型:

    在技术框架上与信任传播模型相似,区别在于初始的页面子集合是确认存在作弊行为的页面集合(黑名单)。

  3. 异常发现模型:

    基本假设是作弊网页必然具有异于正常网页的特征,这些特征可能涉及内容方面,也可能涉及链接关系方面。制定具体算法的流程通常是先找到一些作弊的网页集合,分析其异常特征,然后利用这些异常特征来识别作弊网页。


专用链接反作弊技术

专用链接反作弊技术致力于识别链接农场网页,通过分析其出链和入链的统计分布规律。正常网页的出链和入链通常遵循Power-law分布。其他特征包括:

  1. URL名称统计特征:

    作弊网页的URL地址倾向于较长,包含更多的点、画线和数字等。多个不同的URL地址可能对应同一个IP地址。

  2. 时间变化的网页特征:

    网页特征会随着时间变化,包括入链和出链的增长率等。正常网页和作弊网页在这些变化模式上有所不同。

识别Google轰炸

Google轰炸利用指向目标网页的锚文字来操纵搜索结果排名。识别方法包括判断锚文字是否与被指向页面有语义关系。如果存在语义关系,则判断为正常链接;否则,可能被认定为作弊链接。

识别内容作弊

内容作弊的识别包括多个方面:

  • 重复关键词作弊:检查文本中是否存在同一关键词的连续重复,消除重复内容。

  • 标题关键词作弊:分析标题词汇在正文中的比例和权重,达到一定条件可判断为标题关键词作弊。

  • 统计手段:通过统计正常网页中的句子长度、停用词分布或词性分布等规律,比较页面内容统计属性是否异常,从而识别内容作弊情况。

识别页面隐藏

识别页面隐藏的方法包括进行两次网页抓取,第一次由搜索引擎爬虫抓取,第二次以模拟人工访问方式抓取。如果两次抓取的内容存在较大差异,则可能认为是作弊页面。

识别网页重定向

网页重定向通常易于识别。许多搜索引擎对重定向网页进行降权惩罚。Strider系统提供了一种解决方案,通过收集一批作弊页面,根据这些页面进行扩展,逐步将可疑页面集合进行识别。通过记录访问时是否发生了重定向,以及重定向到哪个页面,可以识别作弊网页。

搜索引擎反作弊综合框架

综合反作弊系统的框架允许用户在浏览搜索结果或上网时随时举报作弊网页。例如,Google推出了浏览器插件,方便用户进行举报。搜索引擎公司内部通常设有专门的团队,负责审核与主动发现可疑页面。审核确认后的网页可以被纳入黑名单或白名单。

image.png

通用的反作弊方法大致可分为两类。一种类似于BadRank,从黑名单出发通过链接关系探索问题网页。另一种类似于TrustRank,从白名单出发通过链接关系排除无问题的网页。这两者相辅相成,搭配使用可以形成有效的通用反作弊屏障。通用方法的优势在于具有预防性,即使是新出现的作弊方式,只要作弊网页需要通过链接关系进行操纵,通用方法就能在一定程度上发挥作用。

然而,通用方法的不足在于其思路缺乏针对性。对于一些特殊的作弊手段,通用方法难以有效发现。为了弥补这一不足,形成了第三道屏障。搜索引擎公司采用专用技术手段来识别特定作弊方法,因为这些方法具有针对性,效果较好。然而,专用方法的缺点在于其只能识别特定的作弊手段,对于新出现的作弊方法通常无法有效应对,并且在时间上往往滞后于作弊现象。


链接分析在搜索引擎排序中的重要性

链接分析在搜索引擎搜索结果排序中扮演着至关重要的角色。绝大部分链接分析算法都构建在随机游走模型和子集传播模型的基础之上。其中,PageRank和HITS算法是两种最为基础和重要的链接分析算法,而许多其他算法都是对它们的改进。SALSA算法作为目前效果显著的一种链接分析方法,融合了HITS算法的相关性特点和PageRank算法的随机游走模型。主题敏感PageRank则是对PageRank算法的进一步改进,可广泛应用于个性化搜索中。

Hilltop算法不仅用于提升搜索系统的准确性,还可作为网页反作弊的技术手段。作弊与反作弊相辅相成,只要作弊有经济利益,这两者的斗争将持续下去。

在作弊方面,常见的手段包括内容作弊、链接作弊、隐藏作弊以及Web 2.0作弊。为了对抗作弊,通用的反作弊手段大致分为三种类型:信任传播模型、不信任传播模型和异常发现模型。然而,纯粹依赖技术手段目前无法完全解决作弊问题,必须将人工手段与技术手段相结合,才能取得更好的反作弊效果。


群贤毕至

访客