博文
搜索引擎是如何工作的?(转帖)(2006-08-22 13:42:00)
摘要:
搜索引擎是如何工作的?
我经常会遇到一些不知道 搜索引擎如何收集信息的人。他们知道什么是搜索引擎,而且也理解得到搜索引擎索引的重要性,尽管有些人知道一些,但当你开始谈论诸如爬行程序之类的内容时,他们就开始卡壳了。 不要再出现卡壳这样的尴尬场面了。本文旨在帮你揭示一些你对搜索引擎还不是很肯定的东西。毕竟,如果你想通过得到搜索引擎的收录而受益,你还是了解一下搜索引擎如何工作为好。
合三为一
基于爬行程序的搜索引擎是由三部分组成的:爬行程序、索引和软件。每一部分都具有自己的功能并且三个部分一起产生了我们在搜索引擎结果页面(SERPs)上所看到的内容。饥饿的爬行程序
另一个广为人知的名字是网络爬行程序或者机器人,搜索引擎爬行程序就是能阅读网页和跟踪站点内到其它网页任何链接的一个自动程序。我们经常将一个称为被"爬行"或"索引"。在网络上有三种非常饥饿、非常活跃的爬行程序。它们的名字为Googlebot(Google)、Slurp( Yahoo!)和MSNBot(MSN 搜索)。
爬行程序会从先前添加到它们索引(数据库)中的系列网页URLs开始网络之旅。在它们访问这些网页时,它们爬行编码和副本,它将在网络上找到的新网页(链接)也添加到它的索引之中。对于这个过程,我们可以将爬行程序称为是正在建立索引,稍后将进一步加以讨论。
爬行程序会根据一个固定的周期回访其目录中的站点,寻找任何的更新。至于爬行程序回访的频率,这要由搜索引擎确定。网站拥有者通过采用一个名为robot.txt的文件确实能控制爬行程序访问这个站点的频率。搜索引擎在进一步爬行一个网站之前首先查看这个文件。
正在成长的索引
索引就像是一个包含爬行程序所找到网站每一个网页和文件副本的巨大目录或者详细目录。如果某一个网页发生了变化,则会使用新的信息来更新这个目录。为了能使一个数量的概念给你描述这些索引的大小,Google最新公布的数字是80亿个网页。
有时候需要一定的时间才能让爬行程序找到新的网页和更改并添加到自己的索引中。由此,一个网页可能已被"爬行"但尚未"索引"。知道一个网页被索引后——添加到索引中——此时在搜索引擎中是搜索不到这些被爬行过的网页的。
搜索......
中文搜索引擎技术揭密:网络蜘蛛(转)(2006-08-22 13:41:00)
摘要:
中文搜索引擎技术揭密:网络蜘蛛
随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为学者,会把有代表性的搜索引擎作为研究对象…… 而作为一个网站的经营者,其更关心的或许是如何通过网络载体让更多的网民知道自己的网站,进而获得更高的流量和知名度。这其中,搜索引擎已经成了一个重要的且是**的宣传途径。一方面,搜索引擎会主动出击,寻找网络上的各种网页数据,并在后台按相关条件进行索引;另一方面,各大网站为了能让自己的内容更多的通过搜索引擎向网民展示,都开始对网站结构进行重大调整,其中包括扁平化结构设计、动态(网页)转静态(网页)、Sitemap等。 这些看来不经意的举动都让我们切身感受到搜索引擎对我们网络使用方式的改变起到了重要作用。并且,正因为搜索引擎的兴起以及社会各界对其重视程度日渐高涨,还由此创造了一个全新的职位——SEO。实际上,搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。 搜索引擎一直专注于提升用户的体验度,其用户体验度则反映在三个方面:准、全、快。用专业术语讲是:查准率、查全率和搜索速度(即搜索耗时)。其中最易达到的是搜索速度,因为对于搜索耗时在1秒以下的系统来说,访问者很难辨别其快慢了,更何况还有网络速度的影响。因此,对搜索引擎的评价就集中在了前两者:准、全。中文搜索引擎的"准",需要保证搜索的前几十条结果都和搜索词十分相关,这需由"分词技术"和"排序技术"来决定(参考作者相关文章[1][2]);中文搜索引擎的"全"则需保证不遗漏某些重要的结果,而且能找到最新的网页,这需要搜索引擎有一个强大的网页收集器,一般称为"网络蜘蛛",也有叫"网页机器人"。 研究搜索引擎技术的文章不少,但大部分讨论的是如何评价网页的重要性,对于网络蜘蛛研究的......
最小最大原理与搜索方法(转)(2006-08-22 13:40:00)
摘要:
Tag:最小最大原理
我的黑白棋终于算是会走棋了,高兴了好一阵子,而且还能战胜我自己。我想把资料总结一下,以下所述的将从最简单的开始,与黑白棋无关,是广义的棋类博弈算法。网上有好多算法文章介绍,我只是简单概括一下。
最小最大原理
最小和最大是相反的矛盾的,正如下棋的两个人,他们是对手,他们在进行对抗,其中一个叫最小者,另一个叫最大者,最大者(想像成我)希望棋面对‘我’最好(最好是赢棋),最好就是最大,反过来,对手就希望棋面对‘我’最差,最差就是最小,最大就是对已最有利,最小就是对对方最有利。这里的最小最大,是有一个参照物的,不管以谁为参照物,它是固定的。最小和最大是对称的,平等的,就像两个重物挂在一杆称上,不断的在较劲。
而最小最大原理是说什么,它是说‘最大者’在选择最大(好)的棋走的时候,它要选对方在回应这步棋时最小(对对方最好)着法中的最大着法!(着法就是可以走的棋)这里涉及了一棵树,它叫博弈树,根在上面,倒长的一棵树。
根是当前局面,我要从当前局面的所有可行着法中选一个‘我认为’‘最佳’的着法走这步棋,这所有的可行着法,就对应着所有的子树,当走了某一步后,就到达了子树的根,同样的情况发生了,这时你是站在最小者的立场上想棋的,所以最小最大反了过来,孙子曰过‘知已知彼,百战不殆’,你不能站在对方的立场想问题,就无法取得胜利!
注意到,这其实是对博弈树的深度优先搜索,只是搜索的时候有两个对立的处理模块,最大搜索和最小搜索,最大的调用最小的,最小的调用最大的,是一个双递归。像这样:
int Max(int depth)//最大搜索{ int best = -INFINITY; if (depth <= 0)//depth是控制深度 { return Evaluate();//返回对当前局面的‘看法’,估值 } GenerateLegalMoves();//生成当前所有着法 while (MovesLeft())//遍历每一个着法 { MakeNextMove();//实施着法 val = Min(depth - 1);//反过来搜索,站在最小者一方 UnmakeMove();//撤销着法 if (val > best)  ......
拥有自己的站内搜索引擎(转)(2006-08-22 13:39:00)
摘要:
拥有自己的站内搜索引擎
若想在某特定网站内搜索特定的内容(如搜索www.cfan.com.cn中包含关键字"网络"的内容),只需要在Google的搜索栏里输入:"网络 site:cfan.com.cn"即可(不含引号)。如果直接在自己站点的网页上建立一个Google的搜索栏,然后让访问者按Google规定的格式进行查询,那不就能实现Google作为自己站内搜索引擎的功能了吗?但是我们当然不能要求使用者还要特地学习Google对特定网站搜索的格式规范。于是笔者立刻联想到是否可以使用JavaScript脚本使得Google接收的查询关键字后自动加上类似"site: cfan.com.cn"的字符串呢?答案当然是肯定的。在你的网站首页需要放置站内搜索引擎页面的<body>标签的范围内放置如下代码: <script type="text/javascript"> var domainroot="mysite.com"//个人站点域名,替换成你的网站的网址即可 function Gsitesearch(curobj){ curobj.q.value="site:"+domainroot+" "+curobj.qfront.value } </script> <form action="http://www.Google.com/search" method="get" onSubmit="Gsitesearch(this)">
<p>站内搜索:<br /> <input name="q" type="hidden" /> <input name="qfront" type="text" style="width: 180px" /> <input type="submit"......
