感谢Mr.Zhao的投稿:搜索引擎最重要的是什么?

优采云 发布时间: 2021-06-02 02:32

  

感谢Mr.Zhao的投稿:搜索引擎最重要的是什么?

  

  感谢赵老师的贡献:搜索引擎最重要的是什么?有人会说是查询结果的准确性,也有人会说是查询结果的丰富程度,但其实这些都不是搜索引擎最致命的部分。 对于搜索引擎来说,最致命的是查询时间。试想一下,如果你在百度界面搜索一个关键词,你的查询结果需要5分钟反馈给你,结果一定是你很快放弃百度。

  为了满足搜索引擎对速度的苛刻要求(商业搜索引擎的查询时间单位都是微秒量级),他们使用缓存来支持查询需求,这意味着我们在查询时得到我们得到的和搜索。结果不及时,但结果已缓存在其服务器上。那么搜索引擎工作的一般流程是怎样的呢?我们可以将其理解为三个阶段。

  

  本文只是对三阶段工作流的一般解释和概述,一些详细的技术细节将与其他文章分开解释。

  一. 网络采集

  网页采集其实就是大家常说的蜘蛛爬取网页。所以对于蜘蛛(谷歌称之为机器人),它们感兴趣的页面分为三类:

  1. 蜘蛛从未爬过的新页面。

  2. 蜘蛛已经抓取了页面,但是页面的内容被更改了。

  3. 蜘蛛爬了,但现在已经删除了页面。

  那么如何找到这三种类型的页面并进行有效的抓取,是蜘蛛编程的初衷和目的。所以这里有一个问题,蜘蛛爬行的起点。

  只要你的网站没有被每个站长严重降级,你可以通过网站后台服务器发现勤劳的蜘蛛光顾你的网站,但是你有没有想过写程序从不同的角度,蜘蛛从何而来?对此,各方各有看法。有一种说法,蜘蛛从*敏*感*词*站(或高权重站)爬行,从高权重到低权重逐层爬行。换句话说,URL集合中没有明显的蜘蛛爬行顺序。搜索引擎会根据你网站内容更新的规则,自动计算什么时候是抓取你网站的最佳时间,然后再抓取。

  其实对于不同的搜索引擎,它们的爬取点肯定是不一样的。对于百度,赵先生更喜欢后者。百度官方博客发表的文章《一种索引页面链接完成机制的方法》(地址:/?p=2057))中明确指出“蜘蛛会尝试检测网页的发布周期并使用以合理的频率,由此我们可以推断,在百度的索引库中,对于每一个URL集合,它都会计算爬取时间和一系列适合它的参数,然后爬取相应的站点。

  在这里,我想澄清一下,对于百度来说,site的价值并不是蜘蛛爬过的你的页面的价值。比如site:,得到的值并不是大家常说的百度收录值。如果要查询具体的百度收录数量,应该在百度提供的站长工具中查询索引号。那么什么是网站呢?以后我会向你解释这个文章。

  那么蜘蛛是如何找到新链接的呢?他们依赖于超链接。我们可以将整个 Internet 视为定向集合的集合,蜘蛛开始沿着网页中的超链接从初始 URL 集合 A 中发现新页面。在这个过程中,每找到一个新的URL,就会和A集合中已有的URL进行比较,如果是新的URL,则添加到A集合中,如果已经在A集合中,则将丢弃。蜘蛛对一个站点的遍历和爬取策略分为两种,一种是深度优先,一种是广度优先。但是如果是百度这样的商业搜索引擎,它的遍历策略可能是更复杂的规则,比如域名本身的权重系数,百度自己的服务器矩阵的分布。

  二. 预处理。

  预处理是搜索引擎中最复杂的部分。基本上,大多数排序算法在预处理中生效。那么,在这个预处理环节,搜索引擎主要进行以下数据处理步骤:

  1. 提取 关键词。

  蜘蛛爬取的页面源码和我们在浏览器中查看的源码是一样的。代码通常很乱,很多都与页面的主要内容无关。因此,搜索引擎需要做三件事: 代码去噪。删除网页中的所有代码,只留下文本。 ②去除非文本关键词。例如页面上的导航栏以及不同页面共享的其他公共区域关键词。 ③去除停用词。停用词是指没有特定含义的词,如“的”、“在”等。

  当搜索引擎得到这个网页的关键词时,它会使用自己的分词系统将这篇文章分成一个分词列表,然后存入数据库,并进行一一对应附上这篇文章的网址。让我用一个例子来说明。

  如果蜘蛛抓取到的页面的URL是,并且搜索引擎在这个页面上进行上述操作后提取的关键词的集合是p,而p是由关键词p1,p2,... ...,pn, 在百度数据库中,它们之间是一一对应的关系,如下图所示。

  

  2. 消除重复和重印网页。

  每个搜索引擎都有不同的识别重复页面的算法,但赵先生认为,如果将重复数据删除算法理解为由100个元素组成,那么所有搜索引擎可能都有80个元素。相同。其他20个元素是根据不同搜索引擎对seo的态度,专门设置了相应的策略。本文只对搜索引擎的大致流程做一个初步的说明,不解释具体的数学模型。

  3. 重要信息分析。

  在代码去噪的过程中,搜索引擎并不是简单的去除,而是充分利用网页代码(如H标签、强标签)、关键词密度、内链锚文本等来分析List此页面上最重要的短语。

  4. 网页重要性分析。

  通过指向该页面的外链锚文本传递过来的权重值确定该页面的权重值,同时结合上述“重要信息分析”建立每个关键词集合本页的p 关键词 拥有的等级系数。

  5. 反转文件。

  如上所述,用户在查询过程中获得的查询结果并不及时,而是粗略的排列在搜索引擎的缓存中。当然,搜索引擎不会知道预言家,他不会知道用户会去哪个关键词查询,但是他可以构建一个关键词词库,当它处理用户的查询请求时,会细分他的根据词库请求。这样,搜索引擎就可以在用户生成查询行为之前,计算出词库中每个关键词对应的URL排名,大大节省了处理查询的时间。

  简单来说,搜索引擎通过控制器来控制蜘蛛爬行,然后用原创数据库保存设置的网址,然后使用索引器控制每个关键词和网址的对应关系。它存储在索引数据库中。

  让我们在下面举个例子。

  如果页面被剪成词p={p1, p2, p3,..., pn},会在索引库中反映如下图

  

  上图是为了方便大家理解而制作的。索引数据库实际上是搜索引擎中性能要求最高的数据库。因为里面的所有因素都会受到算法的影响,所以我觉得实际的索引数据库应该是一个比较复杂的多维数组组成的索引表,但是它的主要功能和上图是一样的。

  三、 查询服务。

  查询服务,顾名思义就是在搜索界面处理用户查询请求。搜索引擎构建检索器,然后分三步处理请求。

  1.根据查询方法用关键词进行分词。

  首先将用户搜索到的关键词划分为关键词的序列,我们暂时用q表示,然后将用户搜索到的关键词q划分为q={q1,q2, q3,... ..., qn}。

  然后根据用户的查询方式确定查询结果中需要的查询词中每个词的显示方式,比如所有词是否连在一起或者中间是否有空格,并根据部分q中不同关键词的讲话占有的重要性。

  2. 对搜索结果进行排序。

  我们有搜索词集q,q-index库中每个关键词对应的URL排名,也根据用户的查询方式和词性计算每个关键词在查询结果中的显示职业很重要,所以只需要一点综合排序算法,搜索结果就会出来。

  3. 显示搜索结果和文档摘要。

  当有搜索结果时,搜索引擎会将搜索结果显示在用户界面上供用户使用。

  在这里,你可以思考两个问题。

  在搜索界面,你经常会发现百度显示的摘要是围绕着用户的搜索词。如果我不光看第一页,再往回翻几页,会看到一些结果,因为目标页面本身没有搜索词没有完全收录,百度提取的摘要中的红字只是一部分搜索词,那么我们可以理解,当搜索词没有完全收录的时候,百度是不是应该先在百度的分词结果中显示出来,比较重要的词呢?那么从这些搜索结果中,我们能不能看出百度的分词算法的一些蛛丝马迹?

  ②有时搜索词会在页面中多次出现,但在百度搜索结果页面中只会显示网站摘要部分的一部分,通常这部分是连续的,那么我们可以理解在摘要部分,百度会优先显示它认为是搜索词最重要部分的页面吗?那么我们可以找出百度去噪后给页面不同部分分配权重的算法吗?

  仁者见仁,智者见智,这两个问题。 SEO的朋友应该自己去探索和探索。赵老师不敢在这里误导别人。

  四、 百度目前的流程漏洞。

  请原谅我用流程漏洞来描述这个模块,但不得不说,在点击者泛滥的世界里,我认为说它是漏洞是可以理解的。

  即除了以上三大链接,百度还构建了用户行为模块,影响原有数据库和索引库。影响原数据库的是百度的快照投诉,主要是针对一些网络暴利的行为,可以理解。而影响索引库的是用户的点击行为。这种设计本身是可以理解的,但百度算法的不成熟导致了点击作弊的猖獗。

  百度的用户行为分析模块非常简单。除了自己的投诉提交入口,它还采集用户在搜索界面上的点击行为。如果这个页面的结果被大多数用户查看,但没有产生点击,大多数用户实际上选择点击第二页甚至下一页,这种现象百度工程师会知道,算法会进行微调根据这个方面。现在百度针对不同行业有不同的算法。

  如果前两页中的某个搜索界面被大量用户选中并点击,通常在24小时之内,搜索结果会大大预测,甚至会被提升到第一位。

  五、 搜索引擎总流程图(加上用户行为分析器)

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线