云水论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3390|回复: 0
打印 上一主题 下一主题

[转帖]搜索引擎的工作原理是怎样的

[复制链接]

1788

主题

62

好友

8525

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2011-2-24 23:38:29 |只看该作者 |倒序浏览
  在要写这篇文章之前我去搜索了一下:搜索引擎如何识别伪原创的,结果搜索出来的几篇文章,虽然有几篇是相同的,但是能真正提到点子上的,还没有,所以决定把自己所了解的拿出来分享一下。

        伪原创一般出现在一些个人站长和一些中小型网站上,因为他们不可能花出大量的时间去原创文章,但是又为了能提供更新量,所以就去找很多文章进行修改用伪原 创来满足网站更新的需求。甚至到后来都出现了一些伪原创的工具,这些工具的做法无非就是替换一些关键词,比如把:怎么,替换成如何,把搜索替换成查询,检 索,把大概替换成大约等等。

        我们不能否认有些网站确实是靠伪原创发展起来了,但是真正想靠伪原创把一个网站规模做大,其实是件很难的事情,有可能某一天,你的收录突然为0,或流量突然为0了。

        那么搜索引擎是如何识别原创和伪原创的呢?我这里总结了几点和别人不同的观点拿出来和大家分享一下。

        首先来说一下我们公司正在开发的一个搜索引擎流程,为了更简化的说明我只把他分成三个大部分,具体处理细节我们暂不讨论,这三部分分别是:蜘蛛程序,预处理程序,索引程序。

蜘蛛程序

        这个相信大家都懂,互联网的最基本元素是网页,网页与网页之间有链接,所以就形成了一个巨大的网络,有一种程序会从一个起点出发无限次的打开链接把所打开 的网页保存到本地服务器,然后再无限次的打开网页,永无休止,这种程序我们叫网络爬虫程序,也叫网络蜘蛛。

        其实写一个蜘蛛程序是很简单的,在我所熟知的任何一门语言里,从打开链接到请求到返回的html数据加起来的代码基本都不会超过十行,但是这里面设计到一 些逻辑问题,比如一些网站里的相对地址,以及外部链接,这些都要在蜘蛛端分析抓取,因为蜘蛛在定向抓取的时候会先以网站为基本单位,等本网站的网页都抓取 完毕之后再打开所连接的外部网页进行抓取,所以说蜘蛛在碰到外部连接的时候会把一些信息存储到本地数据库中,以便处理完网站信息之后再进行下个单元的抓取 另外这个信息也会在预处理的时候用来计算网站权重。

         比如我们以A网站的首页做为蜘蛛入口点,这时候程序会把A网站首页的html代码全部请求回来,然后通过正则表达式提取所有的页面链接(图片以及多媒体链接)然后将所有的链接拿出来依次打开抓取内容,我们可以这样来表示:

         循环开始

           打开连接-->抓取数据-->提取连接-->存储

         循环结束

预处理程序

        这个程序是我认为在搜索引擎里最核心的程序,也是最复杂的程序,基本所有的计算分析处理工作全是在这个程序里完成的,很多SEOer们在研究搜索引擎的时 候只研究一些表面现象,只是根据自己的猜测搜索引擎可以会有哪些判断,实不知这里有着这样一套复杂且有着高度精密逻辑的程序在这里分析每一个网页的结构。

        预处理所要做的工作是分析网页的结构,解读每一个标记每一段话的意思,分析出网页中每一部分的功能,一般我们会将蜘蛛抓取下来的数据以独立文件的方式存储 到硬盘中(我们公司的做法是以xml方式存储,这样更便于分析结构,相信其它公司也都差不多),例如这是一个论坛的贴子页面,还是一个列表页面,这是一个 商品的具体介绍页面,还是一个cms系统的文章页面,这都是需要分析的,除了这些以外,还需要分析网页中哪部分是标题,哪部分是价格,哪部分是文章的具体 内容,哪部分是产品介绍,例如我们看到这样的结果:

 

 

从这个情况来看搜索引擎显然是知道这样的信息:这个页面是论坛的贴子页面,有十六个贴子,并且这十六个贴子都是一个人发的,并且还知道具体的时间。

这是谷歌上的结果,我们再来看一下百度的:

 

可以看出,百度也是可以分析这个页面结构的,而且具体的每一个回贴都可以分析的得出来,但是相比谷歌而言他没有分析出有几个作者(发贴人),我不知道是没有分析出来,还是分析出来没有展示,我更相信是后者。

这里有一个重要的说明:这个网页的html代码是我自己亲手编写的,并不是用的开源discuz这种论坛,所以说这种网页结构是一种对搜索引擎来说全新的,并非大众的。

其实在预处理过程中需要计算的东西非常之多,比如权重的计算,这是谷歌pr值的计算方法:

 

 

 

 

谷歌认为如果A页面连接了B页面,那么就说明A给B投了一票,也就是完成了一次权重的传递,权重越高的页面传递的权重就越高,同样这个结果也会影响 到网页在索引中的排名,也就是说我们在预处理中需要对网页进行分析整理计算归档等等操作,而最后建立的索引只是为了方便查询而已。

去噪点

搜索引擎在把一个网页里的html标记都去掉之后就会剩下网页中所有的内容(文字),这时候会把一些共用信息去除掉,如一些网页的左侧内容是全站通 用的,这样我们只需要分析一次就够了,在得到内容页的时候就会依照特性把共用的东西去除掉,还有头尾共公信息等。这样所提炼出来的数据就是每个网页中不同 的内容了,也就是这个网页中最重要的部分。

很多人以为分析到这一步就完了,其实不是的,做到这些还远远不够,搜索引擎在得到页面的具体内容之后还会用自己庞大的词库去为内容进行分析,分析这 个网页探讨的内容是属于哪个范畴,应该属于哪个分类,里面提到了哪些关键词,有些整个句子是不是应该进行更详细的分词等等。这中间还会去掉一些如“的, 地,吗,吧,嘛”等无意义词,也就是说这些字在文章中只起到一些感叹或者说是表达说话语气的作用字,而实际对本句话的意思,没有太多改变的字。

所以有些人通过一些文字替换方法来逃过搜索引擎的语义分析我想这是不太可能的,有的人甚至是把文章段落打乱重新组合,其实这也是无法躲避搜索引擎的 预处理判断的,有些被搜索引擎放出来的,并不是躲避过了这些规则,而是因为搜索引擎里判断的规则很多都是递归的或具有父子关系的,可能因为一些特殊条件而 越过了某些判断而已。

索引程序

      索引程序是搜索引擎中最至关重要的程序,因为只有这一套程序是面向客户的,其它的程序全都是在后台操作的。在预处理中把网页都分门别类然后再计算出权重以 及对用户的受欢迎程度之后,索引程序会根据生成一套规则,根据这套规则把网页全部都索引起来,以方便查询。这个索引规则并不是一成不便的,因为有很多不太 人性化的地方,所以需要不断的升级,不断的改进。

在索引完成之后,还有一个缓存机制,因为大量的检索人群势必会给服务器造成难以承受的压力,所以在一段时间这内不同的人搜索同样的内容后者只需要读取缓存就可以了,而不需要再次去查询索引,我们举个例子来说明一下。

 

 

 

 

这是我随手敲上来的几个字,我认为这样的话应该没有人去搜索的。在第一次搜索的时候:

“百度一下,找到相关网页100篇,用时0.084秒”用时是0.084

当我再次点击搜索按钮的时候:“百度一下,找到相关网页100篇,用时0.001秒”用时变成了0.001秒

连续点击了几次时间都不会超过0.004秒。这说明我后几次的查询结果是从缓存中读取出来的。

这个索引程序无时无刻都在这样永无休止的响应着用户的请求,当再产生一批新数据的时候,程序会对他进行增量索引(百度一般是在每周三的时候)而之前的一些不太友好的内容则会被从索引中清除掉。

总 结

      虽然说的还是不够太彻底,但是自我认为比网上一些公开的seoer的文章写的稍有深度了一些,本人只是想通过文章把自己工作中所了解的搜索引擎和大家探讨一下,如果你有不同的意见,你全是对的,好了就说这些吧,有什么问题请给我留言

 

作者信息:大伟 - 真名:马林,
  你的沉默明亮如灯、简单如指环。

  论坛其他名字 【云水.墨】 【淡墨瀑雪】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|云水网 ( 鲁ICP备09069806号 )

GMT+8, 2024-6-15 01:43 , Processed in 0.035838 second(s), 18 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部