随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为学者,会把有代表性的搜索引擎作为研究对象……
而作为一个网站的经营者,其更关心的或许是如何通过网络载体让更多的网民知道自己的网站,进而获得更高的流量和知名度。这其中,搜索引擎已经成了一个重要的且是免费的宣传途径。一方面,搜索引擎会主动出击,寻找网络上的各种网页数据,并在后台按相关条件进行索引;另一方面,各大网站为了能让自己的内容更多的通过搜索引擎向网民展示,都开始对网站结构进行重大调整,其中包括扁平化结构设计、动态(网页)转静态(网页)、Sitemap等。
这些看来不经意的举动都让我们切身感受到搜索引擎对我们网络使用方式的改变起到了重要作用。并且,正因为搜索引擎的兴起以及社会各界对其重视程度日渐高涨,还由此创造了一个全新的职位——SEO。实际上,搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。
搜索引擎一直专注于提升用户的体验度,其用户体验度则反映在三个方面:准、全、快。用专业术语讲是:查准率、查全率和搜索速度(即搜索耗时)。其中最易达到的是搜索速度,因为对于搜索耗时在1秒以下的系统来说,访问者很难辨别其快慢了,更何况还有网络速度的影响。因此,对搜索引擎的评价就集中在了前两者:准、全。中文搜索引擎的“准”,需要保证搜索的前几十条结果都和搜索词十分相关,这需由“分词技术”和“排序技术”来决定(参考作者相关文章[1][2]);中文搜索引擎的“全”则需保证不遗漏某些重要的结果,而且能找到最新的网页,这需要搜索引擎有一个强大的网页收集器,一般称为 “网络蜘蛛”,也有叫 “网页机器人”。
研究搜索引擎技术的文章不少,但大部分讨论的是如何评价网页的重要性,对于网络蜘蛛研究的文章不多。网络蜘蛛技术并不是一项十分高深的技术,但要做一个强大的网络蜘蛛,却非易事。 在目前磁盘容量已经不是瓶颈的时候,搜索引擎一直在扩大自己的网页数量。最大的搜索引擎Google(
http://www.google.com
)从2002年的10亿网页增加到现在近40亿网页;最近雅虎搜索引擎(
http://search.yahoo.com/
)号称收录了45亿个网页;国内的中文搜索引擎百度(
http://www.baidu.com
)的中文页面从两年前的七千万页增加到了现在的两亿多。据估计,整个互联网的网页数达到100多亿,而且每年还在快速增长。因此一个优秀的搜索引擎,需要不断的优化网络蜘蛛的算法,提升其性能。
或许有些人有疑问,为何搜索引擎需要用网络蜘蛛抓取网站所有的网页,为什么不在搜索者输入关键词后只把那些需要的结果抓取过来? 这实际上是效率问题,搜索引擎不可能在搜索时实时去检查每个网页,而是需要把网页先抓取下来,按照关键词建立好索引,每次搜索的结果都会直接从搜索引擎建立好索引的数据库中查找,然后把结果返回给访问者。 关于搜索引擎系统架构方面的知识,参考文献[3],本文主要介绍网络蜘蛛的相关技术。
网络蜘蛛基本原理
网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。
对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原因一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到;另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含图片),100亿网页的容量是100×2000G字节,即使能够存储,下载也存在问题(按照一台机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。同时,由于数据量太大,在提供搜索时也会有效率方面的影响。 因此,许多搜索引擎的网络蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深度。
在抓取网页的时候,网络蜘蛛一般有两种策略:广度优先和深度优先(如下图所示)。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。两种策略的区别,下图的说明会更加明确。
由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于第2层,I属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。 对于网站设计者来说,扁平化的网站结构设计有助于搜索引擎抓取其更多的网页。
网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取(下小节会介绍),但对于一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。 网络蜘蛛可以通过所给的权限对这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索者提供相应的权限验证。
网站与网络蜘蛛
网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负担过重。(这个应该就是I170某些文章浏览数突然增加的原因吧)今年4月,淘宝网(
http://www.taobao.com
)就因为雅虎搜索引擎的网络蜘蛛抓取其数据引起淘宝网服务器的不稳定。网站是否就无法和网络蜘蛛交流呢?其实不然,有多种方法可以让网站和网络蜘蛛进行交流。一方面让网站管理员了解网络蜘蛛都来自哪儿,做了些什么,另一方面也告诉网络蜘蛛哪些网页不应该抓取,哪些网页应该更新。
每个网络蜘蛛都有自己的名字,在抓取网页的时候,都会向网站标明自己的身份。网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User-agent,用于标识此网络蜘蛛的身份。 例如Google网络蜘蛛的标识为GoogleBot,Baidu网络蜘蛛的标识为BaiDuSpider,Yahoo网络蜘蛛的标识为Inktomi Slurp。如果在网站上有访问日志记录,网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数据等等。如果网站管理员发现某个蜘蛛有问题,就通过其标识来和其所有者联系。下面是博客中国(
http://www.blogchina.com
)2004年5月15日的搜索引擎访问日志:
网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放在网站服务器的根目录下,如:
http://www.blogchina.com/robots.txt
。网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访问,或者哪些目录对于某些特定的网络蜘蛛不能访问。例如有些网站的可执行文件目录和临时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目录。Robots.txt语法很简单,例如如果对目录没有任何限制,可以用以下两行来描述:
User-agent: *
Disallow:
当然,Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。
网络蜘蛛在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META标识。通过这些标识,可以告诉网络蜘蛛本网页是否需要被抓取,还可以告诉网络蜘蛛本网页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但是网页内的链接需要被跟踪。
关于Robots.txt的语法和META Tag语法,有兴趣的读者查看文献[4]
现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面被抓取到,网站管理员可以建立一个网站地图,即Site Map。许多网络蜘蛛会把sitemap.htm文件作为一个网站网页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担。 (这里就是Loveyuki提到的Site Map)
内容提取
搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取下来网页包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件抓取下来后,需要把这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。
对于doc、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息和文件其它相关的信息。
HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的字体、颜色、位置等版式,如:、、等,提取文本信息时需要把这些标识符都过滤掉。过滤标识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要程度。 同时,对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无用的链接。例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会搜索到,无疑会带来大量垃圾信息。过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;对于一些重要而结果特殊的网站,还需要个别处理。这就需要网络蜘蛛的设计有一定的扩展性。
对于多媒体、图片等文件,一般是通过链接的锚文本(即,链接文本)和相关的文件注释来判断这些文件的内容。例如有一个链接文字为“张曼玉照片”,其链接指向一张bmp格式的图片,那么网络蜘蛛就知道这张图片的内容是“张曼玉的照片”。这样,在搜索“张曼玉”和“照片”的时候都能让搜索引擎找到这张图片。另外,许多多媒体文件中有文件属性,考虑这些属性也可以更好的了解文件的内容。
动态网页一直是网络蜘蛛面临的难题。所谓动态网页,是相对于静态网页而言,是由程序自动生成的页面,这样的好处是可以快速统一更改网页风格,也可以减少网页所占服务器的空间,但同样给网络蜘蛛的抓取带来一些麻烦。由于开发语言不断的增多,动态网页的类型也越来越多,如:asp、jsp、php等。这些类型的网页对于网络蜘蛛来说,可能还稍微容易一些。网络蜘蛛比较难于处理的是一些脚本语言(如VBScript和JavaScript)生成的网页,如果要完善的处理好这些网页,网络蜘蛛需要有自己的脚本解释程序。对于许多数据是放在数据库的网站,需要通过本网站的数据库搜索才能获得信息,这些给网络蜘蛛的抓取带来很大的困难。对于这类网站,如果网站设计者希望这些数据能被搜索引擎搜索,则需要提供一种可以遍历整个数据库内容的方法。
对于网页内容的提取,一直是网络蜘蛛中重要的技术。整个系统一般采用插件的形式,通过一个插件管理服务程序,遇到不同格式的网页采用不同的插件处理。这种方式的好处在于扩充性好,以后每发现一种新的类型,就可以把其处理方式做成一个插件补充到插件管理服务程序之中。
更新周期
由于网站的内容经常在变化,因此网络蜘蛛也需不断的更新其抓取网页的内容,这就需要网络蜘蛛按照一定的周期去扫描网站,查看哪些页面是需要更新的页面,哪些页面是新增页面,哪些页面是已经过期的死链接。
搜索引擎的更新周期对搜索引擎搜索的查全率有很大影响。如果更新周期太长,则总会有一部分新生成的网页搜索不到;周期过短,技术实现会有一定难度,而且会对带宽、服务器的资源都有浪费。搜索引擎的网络蜘蛛并不是所有的网站都采用同一个周期进行更新,对于一些重要的更新量大的网站,更新的周期短,如有些新闻网站,几个小时就更新一次;相反对于一些不重要的网站,更新的周期就长,可能一两个月才更新一次。
一般来说,网络蜘蛛在更新网站内容的时候,不用把网站网页重新抓取一遍,对于大部分的网页,只需要判断网页的属性(主要是日期),把得到的属性和上次抓取的属性相比较,如果一样则不用更新。
结论
本文主要讨论了网络蜘蛛相关的技术要点,如果要设计好的网络蜘蛛,需要了解更多的技术细节,可以参考文献[5]。
网络蜘蛛在搜索引擎中占有重要位置,对搜索引擎的查全、查准都有影响,决定了搜索引擎数据容量的大小,而且网络蜘蛛的好坏直接影响搜索结果页中的死链接(即链接所指向的网页已经不存在)的个数。目前如何发现更多的网页、如何正确提取网页内容、如果下载动态网页、如何提供抓取速度、如何识别网站内内容相同的网页等都是网络蜘蛛需要进一步改进的问题。
Ramblings about Lucene, Nutch, and other stuff.
I'm a primary developer of the Lucene and Nutch open source search projects.
Lot's of folks think good open-source desktop search can already be easily implemented with tools like Lucene. But desktop search has exacting requirements.
谈到网页搜索引擎时,大多数人都会想到雅虎。的确,雅虎开创了一个互联网络的搜索时代。然而,雅虎目前用于搜索网页的技术却并非该公司原先自己开发的。2000年8月,雅虎采用了Google(www.google.com)这家由斯坦福大学学生创建的风险公司的技术。理由非常简单,Google的搜索引擎比雅虎先前使用的技术能更快、更准确搜索到所需要的信息。
让我们自己来设计、开发一个强劲、高效的搜索引擎和数据库恐怕短时间内在技术、资金等方面是不可能的,不过,既然雅虎都在使用别人的技术,那么我们是不是也可以使用别人现成的搜索引擎网站呢?
剖析编程思路
我们可以这样设想:模拟一个查询,向某个搜索引擎网站发出相应格式的搜索命令,然后传回搜索结果,对结果的HTML代码进行分析,剥离多余的字符和代码,最后按所需要的格式显示在我们自己的网站页面里。
这样,问题的关键就在于,我们要选定一个搜索信息准确(这样我们的搜索才会更有意义啊)、速度快(因为我们分析搜索结果并显示需要额外的时间),搜索结果简洁(便于进行HTML源代码分析和剥离)的搜索网站,由于新一代搜索引擎Google的各种优良特性,这里我们选择它为例,来看看用PHP怎样实现后台对Google(www.google.com)搜索、前台个性化显示这一过程。
我们先来看看Google的查询命令的构成。进入www.google.com网站,在查询栏中输入“abcd”,点击查询按钮,我们可以发现浏览器的地址栏变成:"http://www.google.com/search?q=abcd&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr=",可见,Google是通过表单的get方式来传递查询参数并递交查询命令的。我们可以使用PHP中的file()函数来模拟这个查询过程。
了解File()函数
语法: array file(string filename);
返回值为数组,将文件全部读入数组变量中。这里的文件可以是本地的,也可以是远程的,远程文件必须指明所使用的协议。例如: result=file(“http://www.google.com/search?q=a ... mp;hl=zh-CN&lr=”),该语句将模拟我们在Google上查询单词“abcd”的过程,并将搜索结果以每行为元素,传回到数组变量 result中。因为这里读取的文件是远程的,所以协议名“http://”不能缺少。
如果要让用户输入搜索字符进行任意搜索,我们可以做一个输入文本框和提交按钮,并将上文中的被搜索字符“abcd”用变量替换:
| echo ' '; file://没有参数的form,默认提交方式为get,提交到本身 echo ''; file://构造一个文本输入框 echo ''; file://构造一个提交查询按钮 echo ' '; if (isset( keywords)) file://提交后PHP会生成变量 kwywords,即要求下面的程序在提交后运行 { urlencode( keywords); file://对用户输入内容进行URL编码 result=file("http://www.google.com/search?q=". keywords."&btnG=Google%CB%D1%CB%F7&hl=zh-CN&lr="); file://对查询语句进行变量替换,将查询结果保存在数组变量 result中 result_string=join(" ", result); file://将数组$result合并成字符串,各数组元素之间用空格粘和 ... file://进一步处理 } ?> |
上面的这段程序已经能按用户输入内容进行查询,并将返回的结果合成一个字符串变量$result_string。请注意要使用urlencode()函数将用户输入内容进行URL编码,才可以正常地对输入的汉字、空格以及其他特殊字符进行查询,这样做也是尽可能逼真地模拟Google的查询命令,保证搜索结果的正确性。
对Google的分析
为了便于理解,现在假设我们所真正需要的东西是:搜索结果的标题。网址和简介等,这是一个简洁而典型的需求。这样,我们所要做的便是:去除Google搜索结果的台头和脚注,包括一个Google的标志、再次搜索的输入框和搜索结果说明等,并且在剩余的搜索结果各项条目中剥离原来的HTML格式标记,替换成我们想要的格式。
要做到这一点,我们必须仔细地分析Google搜索结果的HTML源码,找到其中的规律。不难发现,在Google的搜索结果的正文总是包含在源码的第一个
标记和倒数第二个
标记之间,并且倒数第二个
标记后紧跟table字符,而且这个组合“
以下所有程序均依次接续在上文程序的“进一步处理”处。
| result_string = strstr( result_string, " "); file://取 result_string从第一个开始后的字符串,以去除Google台头 position= strpos( result_string," table符号的位置 result_string= substr( result_string,0, position);//截取第一个table符号之前的字符串,以去除脚注 |
应用与实现
现在我们已经得到有用的HTML源码主干了,剩下的问题是如何自主地显示这些内容。我们再分析一下这些搜索结果条目,发现每个条目之间也是很有规律的用分隔,也就是各成一个段落,按这个特点我们用explode()函数把每个条目切开:
语法:explode(string separator, string string);
返回一个数组,按separator切开后的各个小字串被保存在数组中。
于是:
| result_array=explode(" ", result_string); file://用字串" "把结果切开 |
我们就得到一个数组 result_array,其中每个元素都是一个搜索结果条目。我们所要做的仅仅是研究每个条目及其HTML显示格式代码,然后按要求替换就行了。下面用循环来处理 result_array中的每个条目。
| for( i=0; i { ... file://处理每个条目 } |
对于每个条目,我们也很容易找到一些特点:每个条目都由标题、摘要、简介、类别、网址等组成,每个部分都换行,即包含
标记,于是再次分割:(以下处理程序放在上文的循环中)
| every_item=explode(" ", result_array[ i]); |
这样我们得到一个数组 every_item,其中 every_item[0]就是标题, every_item[1]和 every_item[2]两行为摘要, every_item[3]和 every_item[4]等等的头部如果包含“简介:”、“< font size=-1 color=#6f6f6f>类别:< /font>”字符,则是简介或类别(因为有的结果条目没有该项),如果头部包含“< font color=green>”则肯定就是网址啦,这种对比判断我们常使用正则表达式(略),如果要替换也很方便,比如包含标题的$every_item[0],其本身是有链接的,我们希望修改这个链接属性,让它在新窗口打开链接:
| echo eregi_replace(' { ... file://处理每个条目中除去第一项(第一项为标题,已经显示)的每一项 ... file://更多格式修改 } |
这样就修改了链接属性,其余很多显示格式的修改、剥离、替换都能用正则替换eregi_replace()来完成。
至此我们已经得到了每个搜索条目的每一项,并能任意修改每项的格式,甚至可以给他套上漂亮的表格。然而一个好的程序应该能适应各种运行环境的,这里也不例外,我们其实还只是讨论了搜索结果的HTML剥离的一种框架方法,真正要做得完美,还要考虑很多内容,比如要显示一共搜索出多少结果,分成多少页等等,甚至还可以刨除与Google相关的那些“类别”、“简介”等代码,让客户根本看不到原始网站。不过这些内容和要求我们都能通过分析HTML进行剥离得到。现在大家完全能自己动手,做个极富个性化的搜索引擎啦。
搜索人才千金难求
Google、百度、微软、雅虎校园招聘大摆擂台
“到微软,意味着进入全球最大的软件公司;到Google,将成为其中国区总裁李开复的‘关门弟子’;到雅虎,将不仅得到其中国首席技术官的亲自培养,还将拥有阿里巴巴给的股票、期权。”明年毕业的研究生小王谈到同学们为什么热衷于进入这些大公司时说。
这些大公司招聘应届生的名额从50~200名不等,并提供优厚的待遇和发展空间,很为大学生们看好。
在Google、雅虎、百度等公司举办的高校宣讲中,相关公司的负责人详细描述了到其公司发展的美好远景。并且为储备人才,扩大自己的影响力,各公司还纷纷推出一些以应届生为主的相关技能大赛。百度有从9月份开始的“程序之美”大赛,一等奖将获得价值1万元的%u7
百度在美国资本市场又为中国创造了一个奇迹,将互联网热潮重新推到了四年来的最高点。继雅虎、google之后,百度的再次成功让人们充分认识到搜索引擎在互联网时代的价值。随着人们对互联网认知度增加、需求深入,在google、百度等综合搜索引擎“腋下”露出的专业搜索空间,让越来越多的人眼红。
现在,无论网民是想研究健康状况,制定度假计划,或是找寻一份工作,均可求助专门针对这些需求的专业搜索引擎。有些专业搜索引擎的主题比较晦涩,如MacherSearch网站,其搜索的内容只与犹太文化有关,还有CybergolfSearch.com网站。
这些专业搜索引擎的开发者都认为:虽然Google、雅虎(Yahoo)和微软(Microsoft)MSN等搜索引擎的功能非常强大,但它们永远无法满足网民某些比较特殊的需求。
眼下,越来越多的风险投资流向专业搜索引擎,这说明“搜索第一”成了人们的新信念。最近,在美国,除了Become.com(购物搜索引擎)之外,Feedster(博客搜索引擎)、Healthdash(医疗信息搜索引擎)、4INFO(移动搜索引擎)和Oodle(本地搜索引擎)等网站都纷纷获得投资。
在国内,专业搜索也为互联网的发展指明了方向。最近刚推出的搜职网(http://www.globejob.com/)就是专业搜索引擎的一种尝试。搜职网并不是一个招聘网站,但却是一个专门提供职位搜索的专业搜索引擎,确切地说应该叫做垂直搜索应用的第二代网上招聘。例如你在该搜索引擎中查找“java工程师”职位,那么无论是在51job、中华英才网、智联招聘还是各大企业自己网站上的招聘需求,都可以在搜职网的搜索结果得到该招聘索引链接,换句话说,你可以通过这个专业的招聘搜索引擎引擎得到互联网上几乎所有的有效招聘信息索引。
这种精准的专业搜索通过对互联网上既有信息进行有效的整理,为求职者或用人单位提供精准的信息,如果在google、百度等综合网站,恐怕求职者在数万搜索结果页上很难一一翻看哪些是自己想要的职位信息。专业搜索有效地提高了互联网上信息专业领域信息的匹配效率。
然而,这股专业搜索引擎的风潮,却唤醒了人们记忆中一段不怎么愉快的回忆。这是否会演变成另一场网站狂潮?这些专业搜索引擎是否会因为未能吸引足量的网民而灭亡,就像许多门户网站那样?
好风凭借力,送我上青云。有了Google和雅虎创建的新型搜索相关广告业务,专业搜索引擎有一个现成的业务模式:只要吸引足够的访问流量,就能获利。另外,许多专业搜索引擎依靠Google和雅虎建立的广告网络,为自己的网站提供广告资源。
互联网的发展趋势是从有网络基础设施到网络上存在散乱的信息,再到网站出现形成互联网上信息孤岛,然后出现综合门户搜索引擎,将信息孤岛以及散乱的信息集中表现出来,再后即出现了信息聚合的搜索引擎,形成了互联网信息访问入口。
从这个角度继续推演,我们可以得出两个方向,一是由于人们总是对自己相关的某些特定领域信息感兴趣,不可能也没有必要关注互联网上所有信息,于是专业型、分类型的网站或者叫信息访问入口将出现,从定位精准、信息双向高效的角度亦强化了这种趋势的出现。定位专业的搜房网、友人网、饭统网的成功都印证了专业分类的有效性,这也可以推演出像搜职网这种专业搜索引擎的未来价值。
就在专业信息门户要吸引临时使用该领域的新人时,问题又出现了:如何让有该专业需求的人知道该网站呢?如何让这些用户更好地使用这些已经聚合在一起的资源?
随着信息聚合形式的演变,以个人为中心的信息聚合方式出现,从形式上改变了互联网信息访问形式,RSS逐渐成为人们阅读互联网的流行方式,此时使用RSS阅读器来推广各种专业网站就成为一种可行且必要的方式。
搜职网已经与国内最有影响的RSS服务提供商POTU-周博通(http://www.potu.com/)合作,POTU已经为搜职网推出了专门的POTU-JOB聚合器,很快就已成为当下最火爆的求职软件。
随着RSS的发展,随着专业搜索需求的深入,这种双向的合作必将成为搜索引擎的附加价值,也为RSS的效用增加了一条新路。
作者:人民网-市场报 来源:人民网-市场报

上海艾瑞市场资询公司研究显示,2007年我国搜索引擎市场规模将达33亿多元。
北京时间9月6日消息,据香港媒体报道,国外很多人都将百度称为“中国的Goolge”,但在风格相似的主页背后,百度和Google在本质上存在着巨大差异。
一些分析人士认为,造成百度和Google差异的最主要因素是中国网络搜索市场本身的特性。通常情况下,中国用户更倾向于使用百度搜索娱乐文件,例如MP3、网络游戏和视频等等,百度也因此成为中国最大的网络搜索引擎。另一方面,中国用户更倾向于使用Googl e搜索信息,从这一角度来看,Google在中国的定位同美国市场相同。
在中国的互联网产业,企业大多采用了西方商业模式,但却不得不结合一些中国市场的自身特点。例如,网络零售商由于担心国内邮政系统不可靠,只能聘请专门人员送货;网络游戏运营商由于担心盗版问题,只能采用按小时收费的计费方式。除了中文同英文之间的差异,中国网络搜索市场还有着其它一些与众不同的特征。例如,中国网络用户大多将互联网作为娱乐媒介,而不是商业渠道,因此用户的搜索需求同美国有很大差异;此外,中国缺乏稳定可靠的付费基础设施,网络搜索服务供应商从中小企业收取广告费用十分困难。
百度董事长兼CEO李彦宏上周在中国互联网大会上表示:“在中国开展网络搜索业务困难重重。中国人有一种社区归属感,他们认为自己属于网络世界中某一特定社区。当网络用户需要搜索信息时,他们自然而然就会选择百度,这并不仅仅因为百度是最大的中文搜索引擎,同时也因为他们可以找到很多有共同兴趣的人。”根据研究公司易观国际公布的最新数据,今年第二季度百度在中国网络搜索市场占据了37%的市场份额,Google的市场份额为23%,雅虎为21%。
同百度有所不同,Google更为关注中国网络搜索市场同全球市场的共性。Google亚太和拉丁美洲地区业务主管辛格-卡西迪(Sukhinder Singh Cassidy)表示:“中国网络搜索市场同全球市场有着很多共同之处,例如本地搜索在中国市场的重要性与日俱增,网络搜索将持续发展。”
Google上周在中国推出了本地搜索服务,并计划今年第四季度在中国设立研发中心。对于国外网络巨头而言,能够以一家中国本土公司的形式开展运营十分重要,因为到目前为止还没有一家国外公司在中国互联网市场取得成功。在2003年收购3721公司之前,雅虎中国业务一直处于勉强维持的阶段。不久前,雅虎以10亿美元的价格收购了阿里巴巴40%的股份,并将雅虎中国区业务并入阿里巴巴。同样在2003年,网络拍卖巨头eBay收购了当时中国最大的拍卖网站易趣网,并籍此进入中国市场。由于类似的原因,亚马逊收购了卓越网的部分股份,Monster.com收购了中华英才网的部分股份。
根据易观国际本周一发布的一份报告,该公司预测中国网络搜索市场将进入群雄并起的战国时代,因为专用搜索引擎的兴起吸引了用户和投资者的广泛关注。易观国际研究员伯纳德-孙(Bernard Sun)表示,百度、Google和其它搜索引擎服务供应商不能仅仅依靠信息搜索生存。他说:“Google和百度未来的主要业务是为用户提供一个数字生活平台,而数字生活由搜索引擎、即时信息和电子商务等多个部分构成。”
搜索服务的专用化已经起步,例如新成立不久影立驰公司(TVix.cn)就计划推出一项专门用于帮助用户下载视频的新型服务。影立驰公司的CEO吴波(音译)表示:“我们主要为用户提供中文内容视频搜索服务。我们将为用户提供多种不同的模式,包括传统的点击付费广告模式,以及付费内容模式。”
尽管Google和雅虎也推出了视频搜索服务,但吴波认为专用服务仍然有着强劲的市场需求。他说:“对于Google而言,涉足视频搜索领域是非常自然而重要的一步。视频搜索的重要性从带宽的使用情况就可以看出端倪,大部分带宽都被用户用来下载音乐、视频和其它娱乐内容。因此,我认为一家专门的视频搜索服务供应商有着很大的成长空间。”
中国网络搜索公司面临的最大问题是能否获得足够的广告收入,这一市场有着太多的竞争对手,包括来自国内的百度和中搜,以及国外的Google和雅虎。除上述网络搜索服务供应商外,网络门户新浪、搜狐、网易和Tom在线,以及电子商务公司阿里巴巴都对中国网络广告市场虎视眈眈。易观国际公布的最新数据显示,今年中国网络广告市场总营收将达到人民币37亿元,其中14%来自于网络搜索公司,78%来自于网络门户,另有6%来自即时信息服务供应商。此外,考虑到中国消费者大多不愿意为内容付费,网络搜索公司要将网站流量转化为金钱并非易事。
百度希望能在搜索服务的各个领域取得领先。李彦宏表示:“我们并没有致力于从某一项搜索服务中获得更多营收,因为只要我们能为用户提供全面的搜索体验,获得营收自然是水到渠成。”由于缺乏中小企业广告基础,中国搜索服务供应商只能同其它互联网公司一起争夺利润率更高的品牌广告市场。China Interactive公司(CIAC)董事长兼CEO陈一舟认为,搜索引擎是中小企业投放广告的最理想平台,而品牌广告更适合社区网站,如CIAC旗下的猫扑(Mop.com)。(摩尔)
无论是对普通网络冲浪者还是网站管理员来说,Google都是目前世界范围内最受欢迎的搜索引擎。它每天处理的搜索请求高达1.5亿次,几乎占全球所有搜索量的1/3。网络冲浪者对Google情有独钟,是由于Google所提供的快速搜索速度及高命中率搜索结果。这些都是基于Google的复杂文本匹配运算法则及其搜索程序所使用的Pagerank?系统(网页级别技术)。下面我们将向大家介绍Google的Pagerank?系统。
Google之所以受网站管理员和Internet媒体服务公司的欢迎,是由于它并非只使用关键词或代理搜索技术,而是将自身建立在高级的网页级别技术基础之上。别的搜索引擎提供给搜索者的是多种渠道得来的一个粗略的搜索结果,而Google提供给它的搜索者的则是它自己产生的高度精确的搜索结果。这就是为什么网站管理员会千方百计去提高自己网站在Google的排名。
Google大受青睐的另一个原因就是它的网站索引速度。向Google提交你的网站直到为Google收录,一般只需两个星期。如果你的网站已经为Google收录,那么通常Google会每月一次遍历和更新(重新索引)你的网站信息。不过对于那些PR值(Pagerank)较高的网站,Google索引周期会相应的短一些。
Google的索引/重新索引周期比大多数搜索引擎要短。这就允许网站管理员可以对网站的页面属性进行编辑修改,如网页标题、头几行文字内容、大字标题、关键字分布,当然了还有外部链接的数量。然后他们很快就可以发现对网页所做的这些更改是否成功。
正因为Google如此受欢迎,你有必要知道Google的搜索引擎是如何工作的。如果不知道它是怎样决定你的排名,那么那些只是稍微熟悉Google排名运算法则的站点都会比你的排名位置要靠前。现在让我们来看一下Google的排名运算法则。
Google的排名运算法则主要使用了两个部分,第一个部分是它的文字内容匹配系统。Google使用该系统来发现与搜索者键入的搜索词相关的网页;第二部分也是排名运算法则中最最重要的部分,就是Google的专利网页级别技术(Pagerank?)。
我先来介绍一下如何使网站具有相关性,即文本内容匹配部分的运算法则:
在搜索网站的关键字时,Google会对其标题标签(meta title)中出现的关键字给予较高的权值。所以你应当确保在你网站的标题标签中包含了最重要的关键词,即应围绕你最重要的关键词来决定网页标题的内容。不过网页的标题不可过长,一般最好在35到40个字符之间。
众所周知,Google并不使用元标签(Meta Tags)如关键字或描述标签。这是由于在这些元标签中所使用的文字并不能为实际的访问者所看到。而且Google认为,这些元标签会被某些网站管理员用于欺诈性地放置一些与其网站毫不相干的热门关键词,并以此提高其网站对该不相干关键词的排名,从而以不正当的手段获得更多的访问者。
这种不支持Meta Tags的特性,意味着Google将从一个网页的头几行文字内容来生成对一个网站的描述。也就是说,你最好把你的关键字或关键短语放到网页的上方,这样如果Google找到它们,就会相应提高你网站的相关性。一旦Google找不到这样相关的内容,那么你要花费很大的力气来让你页面的其它部分具有相关性。
在决定一个网站的相关性时,Google也会考虑网页中正文内容的关键字密度(Keyword Density),所以你要确保在你的整个网页中贯穿出现了若干次关键词和关键短语。但是要记住“过犹不及”,6-10%的关键词密度为最佳。
增加页面相关性的其它策略还包括:在标题内容中放入关键词,并尽可能对内容中出现的关键词进行加粗。Google现在也索引图片的ALT属性文字并计入相关性计算。所以在你的ALT属性中应包含关键词,来增加网站的相关性得分。
增加页面相关性的最后一个技巧就是使你网站上的外部文字链接包含你的关键字。在外部文字链接中包含关键字可有效提高你的网站相关性得分(Google在其PageRank技术的描述中,亦提及在计算网页级别时会对该网站的外部链接进行分析并计入相关性)。
在文字链接中应该包含多少关键字?这是个见仁见智的问题。不过我注意到有很多网站在他们的交换链接区域,已经提供了相应的文字链接内容。例如:“欢迎进行友情链接,并请使用如下代码建立至本网站的链接。”
上面我们介绍了Google如何计算网站的相关性,及如何增加网站相关性的一些有关知识。不过Google究竟使用什么方法来衡量一个网站的好坏呢?答案就是-Google的Pagerank?系统。
PageRank取自Google的创始人Larry Page,它是Google排名运算法则(排名公式)的一部分,用来标识网页的等级/重要性。级别从1到10级,10级为满分。PR值越高说明该网页越受欢迎(越重要)。例如:一个PR值为1的网站表明这个网站不太具有流行度,而PR值为7到10则表明这个网站非常受欢迎(或者说极其重要)。
在计算网站排名时,PageRank会将网站的外部链接数考虑进去。我们可以这样说:一个网站的外部链接数越多其PR值就越高;外部链接站点的级别越高(假如Macromedia的网站链到你的网站上),网站的PR值就越高。例如:如果ABC.COM网站上有一个XYZ.COM网站的链接,那么ABC.COM网站必须提供一些较好的网站内容,从而Google会把来自XYZ.COM的链接作为它对ABC.COM网站投的一票。你可以下载和安装Google的工具条来检查你的网站级别(PR值)。
那么是不是说,一个网站的外部链接数越高(获得的投票越多), 这个网站就越重要,因而在用与其相关的关键词进行搜索时,它就会取得更高的排名呢?--大错特错。
Google对一个网站上的外部链接数的重视程度并不意味着你因此可以不求策略地与任何网站建立连接。这是因为Google并不是简单地由计算网站的外部链接数来决定其等级。要是那样的话,所有网站管理员就只剩一件事情可做了-疯狂交换链接,尽可能获得最多的外部链接。Google是这样描述的:“Google不只是看一个网站的投票数量,或者这个网站的外部链接数量。同时,它也会对那些投票的网站进行分析。如果这些网站的PR值比较高(具有相当重要性),则其投票的网站可从中受益(亦具有重要性)。
那么,是不是说对一个网站而言,它所拥有的较高网站质量和较高PR分值的外部链接数量越多就越好呢?-也不尽然。
说它错是因为-Google的Pagerank系统不单考虑一个网站的外部链接质量,也会考虑其数量.比方说,对一个有一定PR值的网站X来说,如果你的网站Y是它的唯一一个外部链接,那么Google就相信网站X将你的网站Y视做它最好的一个外部链接,从而会给你的网站Y更多的分值。可是,如果网站X上已经有49个外部链接,那么Google就相信网站X只是将你的网站视做它第50个好的网站。因而你的外部链接站点上的外部链接数越多,你所能够得到的PR分值反而会越低,它们呈反比关系。
说它对是因为-一般情况下,一个PR分值大于等于6的外部链接站点,可显著提升你的PR分值。但如果这个外部链接站点已经有100个其它的外部链接时,那你能够得到的PR分值就几乎为零了。同样,如果一个外部链接站点的PR值仅为2,但你却是它的唯一一个外部链接,那么你所获得的PR值要远远大于那个PR值为6,外部链接数为100的网站。
这个问题现在看来好象越来越复杂了。不要紧,看看下面这个公式你就会完全理解了,只是需要一点数学知识。
首先让我们来解释一下什么是阻尼因数(damping factor)。阻尼因素就是当你投票或链接到另外一个站点时所获得的实际PR分值。阻尼因数一般是0.85。当然比起你网站的实际PR值,它就显得微不足道了。现在让我们来看看这个PR分值的计算公式:
PR(A) = (1-d) + d(PR(t1)/C(t1) + ... + PR(tn)/C(tn))
其中PR(A)表示的是从一个外部链接站点t1上,依据Pagerank?系统给你的网站所增加的PR分值;PR(t1)表示该外部链接网站本身的PR分值;C(t1)则表示该外部链接站点所拥有的外部链接数量。大家要谨记:一个网站的投票权值只有该网站PR分值的0.85,而且这个0.85的权值平均分配给其链接的每个外部网站。
设想一个名为akamarketing.com的网站,被链接至PR值为4,外部链接数为9的网站XYZ.COM,则计算公式如下:
PR(AKA) = (1-0.85) + 0.85*(4/10)
PR(AKA) = 0.15 + 0.85*(0.4)
PR(AKA) = 0.15 + 0.34
PR(AKA) = 0.49
也就是说,如果我的网站获得一个PR值为4,外部链接数为9的网站的链接,最后我的网站将获得0.49的PR分值。
再让我们看看如果我的网站获得的是一个PR分值为8,外部链接数为16的网站的链接,那么我将获得的PR分值将是:
PR(AKA) = (1-0.85) + 0.85*(8/16)
PR(AKA) = 0.15 + 0.85(0.5)
PR(AKA) = 0.15 + 0.425
PR(AKA) = 0.575
上述两个例子表明,外部链接站点的PR值固然重要,该站点的外部链接数也是一个需要考虑的重要因素。
好了,大家无须记住上面的公式,只要记住:在建设你自己网站的外部链接时,应尽可能找那些PR值高且外部链接数又少的网站。这样一来你网站上这样的外部链接站点越多,你的PR值就会越高,从而使得你的排名得到显著提升。
不过,为使你的PR值得到提高,你最应该做的一件事情就是-向DMOZ提交你的网站,从而为DMOZ,即ODP(开放目录专案)收录。
众所周知,Google的Pagerank?系统对那些门户网络目录如DMOZ,Yahoo和Looksmart尤为器重。特别是对DMOZ。一个网站上的DMOZ链接对Google的Pagerank?来说,就好象一块金子一样有价值。这时候收录该网站的那个DMOZ目录页的PR分值,也变得无足轻重了。我就看到过有一些站点,就因为被ODP所收录,从而身价倍增,其PR分值在Google上立即得到提升。这就是因为Google使用了它自己的ODP版本作为它的网站目录。
ODP的链接对Pagerank?非常重要。如果你的网站为ODP收录,则可有效提升你的页面等级。不信吗?
确实如此。在Google上随便找个词搜索,你会发现,Google所提供的搜索结果的头10个站点中,就有7到8个也同时在Google的目录中出现。这个事实足以说明,如果一个网站没有被ODP收录的话,那它也别指望能从Google上得到太多的访问量。
向ODP提交你的站点并为它收录,其实并不是一件难事,只是要多花点时间而已。只要确保你的网站提供了良好的内容,然后在ODP合适的目录下点击“增加站点”,按照提示一步步来就OK了。至少要保证你的索引页(INDEX PAGE)被收录进去。我说“至少”是因为尽管ODP声称他们只收录你的索引页,而事实上在ODP上却不乏被收录了5到10页的网站。所以,如果你的网站内容涉及完全不同的几块内容,你可以把每个内容的网页分别向ODP提交-不过请记住“欲速则不达”。等到Google对其目录更新后,你就能看到你的PR值会有什么变化了。
如果你的网站为Yahoo和Looksmart所收录,那么你的PR值会得到显著提升。关于“Yahoo提交技巧”,如果有时间可以阅读下面这篇文章“Yahoo网站提交技巧”。
如果你的网站是非商业性质的或几乎完全是非商业性质的内容,那么你可以通过www.Zeal.com使你的网站为著名的网络目录Looksmart所收录。我个人非常喜爱ZEAL.COM,就象Google也从DMOZ获得搜索结果一样,Looksmart也是从Zeal网络目录获得非商业搜索列表。
让我们继续-我是在一个星期二向Zeal提交的AKA Marketing.com,到了星期四早上它就出现在Zeal上了。到了星期一我检查了一下我的日志文件,发现来自Looksmart的大量提名,原来它已经被Looksmart收录了。后来我又查看了一下我的日志,发现MSN已经根据Looksmart的数据库而更新了它自己的数据库,而且由此而提升的好的排名也给我带来了不少的访问者。想想看吧,6天之内我的网站就出现在Zeal,Looksmart和MSN上了。所以如果你有非商业网站,可千万别忘了去Zeal.com提交你的网站哦!
在向Zeal.com提交你的网站前,你得先通过它的一个会员小测试。别担心,这个测试是很简单的。如果你是一个网站管理员,而你的网站又已经收录在三大知名网络目录DMOZ,Yahoo和Looksmart中,我猜想你的网站的PR值一定比较高,而且搜索排名也不会差。
综述:
1. 在网站的标题标签(TITLE tag)中包含主要关键词和关键短语。
2. 提高网站外部链接的质量和数量。
3. 使网站为三大知名网络目录DMOZ,Yahoo和Looksmart收录。
--------------------------------------------------------------------------------
摘自论坛:
PageRank的提高可有效提升你在Google中的页面排名,但并不是说PageRank越高则排名越靠前。有一些网站尽管PageRank不算高,但却较一些PageRank高的网站排名还要靠前。所以你应该在对网站优化的同时,也要努力提高网站的PR值。依我看来,提高PR最佳和最简单的办法在于:
1. 提供有趣/有价值的网站内容,这样人们会主动和你进行互惠链接,从而提高你的外部链接值。
2. 将网站提交到各大门户网站,这样可显著改善你的网站在Google上的排名。
3. 可将网站添加到行业门户站点、网上论坛、留言簿等等各种允许添加网址链接的地方。
4. 与其他网站交换链接来提高链接权值
最近一直忙着写论文,周末终于有空放松半天时间,到网络上看看,铺天盖地的关于google最新的消息,原来google又出了新玩艺,Google Web Accelerator。
听说很神,特地找了一台Windows电脑准备一试。可是我去google网站下载时却发现google 说用户太多,不提供了。
感谢Owen硬盘里还有保留,终于得到了珍贵的“绝版”Google网页加速器。
我尝试访问了6个网站,并且分析了日志,基本上明确了Google网页加速器的工作原理,其实很简单:Proxy + 缓存。
1. 本地化的Proxy + 缓存
当运行了 google 的网页加速器,本机会启动一个httpd的服务,端口是9100 :
http://127.0.0.1:9100
这个服务实际上是一个本地化的Proxy+缓存,就是所有的 http 的请求都是通过这里走的。那么为什么能够加速呢?
缓存。当你第一次访问一个网页的时候,相当多的图片,静态文字全部的存储下来,然后当你再次访问的时候,就直接从缓存里调出来,因此大大加快了访问速度。
我这里做了一个有趣的试验:
访问我自己的blog一个日志(http://blog.wespoke.com/archives/000907.html)的日志记录:
adsl-69-154-77-102.dsl.rcsntx.swbell.net - - [09/May/2005:12:34:38
+0800] "GET /archives/000907.html HTTP/1.1" 304 -
刷新这个网页,Apache的记录仍然是 304。表明没有传输内容,紧紧验证了
expired的信息。
touch archives/000907.html (改变这个文档的时间标记)
再次刷新,这次不一样了:
adsl-69-154-77-102.dsl.rcsntx.swbell.net - - [09/May/2005:12:35:28
+0800] "GET /archives/000907.html HTTP/1.1" 200 10319
这次是返回了200,并传输了10319个字节。
这个就是工作的原理,在第一种的情况下,节省了10319个字节的传输。
当然,这也是所有的缓存proxy的设计原则。
2. Google 的缓存+路由
当我发现我访问的日志上记录的IP和我本地的IP不一样的时候,看来Google 自己也还是有缓存服务器的,就是说当我们请求一个网页时,如果联接非常的慢,google会让这个请求通过google的缓存服务器,同时改变路由。这就是为什么看到的IP不是自己机器的IP了。
由此看来,Google的网络加速器实际上是一个个人的小型Proxy缓存服务器+Google帝国的一个格点状的Proxy缓存服务器系统构成并有效的来管理这些缓存,并非什么特别的技术,而是将大家忽视了多年的一些基本的概念从新应用了起来。
3. 看看这里就更加明白一些:http://race.google/http://www.wespoke.com,注意,必须启动了加速器后才能连接,因为google Web Accelerator讲这个域名解释为本机并采用Iframe显示。您可以将http://www.wespoke.com替换成您想要到达的网页,看看有没有加速?
关于加速的原理,你应该了解expired模块。
http://httpd.apache.org/docs/mod/mod_expires.html