搜索引擎优化高级编程:php版(搜索引擎最重要的是什么?会说是查询结果的准确性 )

优采云 发布时间: 2021-12-22 14:07

  搜索引擎优化高级编程:php版(搜索引擎最重要的是什么?会说是查询结果的准确性

)

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

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

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

  一.网络采集

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

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

  2. 蜘蛛抓到了页面,但是页面的内容发生了变化。

  3. 被蜘蛛爬过但现在已经被删除的页面。

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

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

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

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

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

  二. 预处理。

  预处理是搜索引擎中最复杂的部分。基本上,大多数排序算法在预处理阶段生效。然后,在预处理步骤中,搜索引擎主要对数据进行如下处理:

  1.提取关键词。

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

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

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

  

  2. 消除重复和转载网页。

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

  3.重要信息分析。

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

  4. 网页重要性分析。

  通过指向该页面的外链锚文本传递的权重值,结合上述“重要信息分析”,为该页面的每个关键词合集p确定一个权重值成立。@关键词 拥有的排序系数。

  5.反转文件。

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

  简单来说,搜索引擎是通过一个控制器来控制蜘蛛爬行,然后用原创数据库保存设置的URL。保存后,使用indexer控制每个关键词与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人工客服


线