搜索引擎,通常指的是收集了万维网上几千万到几十亿个网页并对网页中的每一个词(即关键词)进行索引,建立索引数据库的全文搜索引擎。当用户查找某个关键词的时候,所有在页面内容中包含了该关键词的网页都将作为搜索结果被搜出来。再经过复杂的算法进行排序(或者包含商业化的竞价排名、商业推广或者广告)后,这些结果将按照与搜索关键词的相关度高低(或与相关度毫无关系),依次排列。
在搜索引擎的后台,有一些用于搜集网页信息的程序。所收集的信息一般是能表明网站内容(包括网页本身、网页的URL地址、构成网页的代码以及进出网页的连接)的关键词或者短语。接着将这些信息的索引存放到数据库中。
搜索引擎的系统架构和运行方式吸收了信息检索系统设计中许多有价值的经验,也针对万维网数据和用户的特点进行了许多修改,如右图所示的搜索引擎系统架构。其核心的文档处理和查询处理过程与传统信息检索系统的运行原理基本类似,但其所处理的数据对象即万维网数据的繁杂特性决定了搜索引擎系统必须进行系统结构的调整,以适应处理数据和用户查询的需要。
爬行和抓取
搜索引擎派出一个能够在网上发现新网页并抓文件的程序,这个程序通常称之为蜘蛛(Spider)。搜索引擎从已知的数据库出发,就像正常用户的浏览器一样访问这些网页并抓取文件。搜索引擎通过这些爬虫去爬互联网上的外链,从这个网站爬到另一个网站,去跟踪网页中的链接,访问更多的网页,这个过程就叫爬行。这些新的网址会被存入数据库等待搜索。所以跟踪网页链接是搜索引擎蜘蛛(Spider)发现新网址的最基本的方法,所以反向链接成为搜索引擎优化的最基本因素之一。搜索引擎抓取的页面文件与用户浏览器得到的完全一样,抓取的文件存入数据库。
建立索引
蜘蛛抓取的页面文件分解、分析,并以巨大表格的形式存入数据库,这个过程即是索引(index).在索引数据库中,网页文字内容,关键词出现的位置、字体、颜色、加粗、斜体等相关信息都有相应记录。
搜索词处理
用户在搜索引擎界面输入关键词,单击“搜索”按钮后,搜索引擎程序即对搜索词进行处理,如中文特有的分词处理,去除停止词,判断是否需要启动整合搜索,判断是否有拼写错误或错别字等情况。搜索词的处理必须十分快速。
排序
对搜索词处理后,搜索引擎程序便开始工作,从索引数据库中找出所有包含搜索词的网页,并且根据排名算法计算出哪些网页应该排在前面,然后按照一定格式返回到“搜索”页面。
再好的搜索引擎也无法与人相比,这就是为什么网站要进行搜索引擎优化。没有SEO的帮助,搜索引擎常常并不能正确的返回最相关、最权威、最有用的信息。
搜索引擎工作原理
全文搜索引擎的“网络机器人”或“网络蜘蛛”是一种网络上的软件,它遍历Web空间,能够扫描一定IP地址范围内的网站,并沿着网络上的链接从一个网页到另一个网页,从一个网站到另一个网站采集网页资料。它为保证采集的资料最新,还会回访已抓取过的网页。网络机器人或网络蜘蛛采集的网页,还要有其它程序进行分析,根据一定的相关度算法进行大量的计算建立网页索引,才能添加到索引数据库中。我们平时看到的全文搜索引擎,实际上只是一个搜索引擎系统的检索界面,当你输入关键词进行查询时,搜索引擎会从庞大的数据库中找到符合该关键词的所有相关网页的索引,并按一定的排名规则呈现给我们。不同的搜索引擎,网页索引数据库不同,排名规则也不尽相同,所以,当我们以同一关键词用不同的搜索引擎查询时,搜索结果也就不尽相同。
和全文搜索引擎一样,分类目录的整个工作过程也同样分为收集信息、分析信息和查询信息三部分,只不过分类目录的收集、分析信息两部分主要依靠人工完成。分类目录一般都有专门的编辑人员,负责收集网站的信息。随着收录站点的增多,现在一般都是由站点管理者递交自己的网站信息给分类目录,然后由分类目录的编辑人员审核递交的网站,以决定是否收录该站点。如果该站点审核通过,分类目录的编辑人员还需要分析该站点的内容,并将该站点放在相应的类别和目录中。所有这些收录的站点同样被存放在一个“索引数据库”中。用户在查询信息时,可以选择按照关键词搜索,也可按分类目录逐层查找。如以关键词搜索,返回的结果跟全文搜索引擎一样,也是根据信息关联程度排列网站。需要注意的是,分类目录的关键词查询只能在网站的名称、网址、简介等内容中进行,它的查询结果也只是被收录网站首页的URL地址,而不是具体的页面。分类目录就像一个电话号码薄一样,按照各个网站的性质,把其网址分门别类排在一起,大类下面套着小类,一直到各个网站的详细地址,一般还会提供各个网站的内容简介,用户不使用关键词也可进行查询,只要找到相关目录,就完全可以找到相关的网站(注意:是相关的网站,而不是这个网站上某个网页的内容,某一目录中网站的排名一般是按照标题字母的先后顺序或者收录的时间顺序决定的)。
搜索引擎数据结构
搜索引擎的核心数据结构为倒排文件(也称倒排索引),倒排索引是指用记录的非主属性值(也叫副键)来查找记录而组织的文件叫倒排文件,即次索引。倒排文件中包括了所有副键值,并列出了与之有关的所有记录主键值,主要用于复杂查询。 与传统的SQL查询不同,在搜索引擎收集完数据的预处理阶段,搜索引擎往往需要一种高效的数据结构来对外提供检索服务。而现行最有效的数据结构就是“倒排文件”。倒排文件简单一点可以定义为“用文档的关键词作为索引,文档作为索引目标的一种结构(类似于普通书籍中,索引是关键词,书的页面是索引目标)。
搜索引擎分类
在浩如烟海的“Internet(因特网)”上,特别是其上的Web(World Wide Web即全球广域网,也称为万维网)上,不会搜索,就不会上网。特别是SEOer朋友们,不了解搜索引擎原理,你怎么做SEO优化?你了解搜索引擎吗?它们是怎么工作的?你在使用哪些搜索引擎?
获得网站网页资料,能够建立数据库并提供查询的系统,我们都可以把它叫做搜索引擎。按照工作原理的不同,可以把它们分为两个基本类别:全文搜索引擎(FullTextSearch Engine)和分类目录(Directory)。可以衍生出元搜索引擎(Meta Search Engine)和集成搜索引擎(All-in-One Search Page)。
全文搜索引擎的数据库是依靠一个叫“网络机器人(Spider)”或叫“网络蜘蛛(crawlers)”的软件,通过网络上的各种链接自动获取大量网页信息内容,并按以定的规则分析整理形成的。Google、百度都是比较典型的全文搜索引擎系统。
分类目录则是通过人工的方式收集整理网站资料形成数据库的,比如雅虎中国以及国内的搜狐、新浪、网易分类目录。另外,在网上的一些导航站点,也可以归属为原始的分类目录,比如“网址之家(http://www.hao123.com/)”。
全文搜索引擎通过自动的方式分析网页的超链接,依靠超链接和HTML代码分析获取网页信息内容,并按事先设计好的规则分析整理形成索引,供用户查询。
两者的区分可用一句话概括:分类目录是人工方式建立网站的索引,全文搜索是自动方式建立网页的索引。(有些人经常把搜索引擎和数据库检索相比较,其实是错误的)
全文搜索引擎和分类目录在使用上各有长短。全文搜索引擎因为依靠软件进行,所以数据库的容量非常庞大,但是,它的查询结果往往不够准确;分类目录依靠人工收集和整理网站,能够提供更为准确的查询结果,但收集的内容却非常有限。为了取长补短,现在的很多搜索引擎,都同时提供这两类查询,一般对全文搜索引擎的查询称为搜索“所有网站”或“全部网站”,比如Google的全文搜索;把对分类目录的查询称为搜索“分类目录”或搜索“分类网站”,比如新浪搜索和雅虎中国搜索。
一、全文搜索引擎
在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。
另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。
当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置/频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。
全文搜索的工作原理
全文搜索引擎一般信息采集、索引、搜索三个部分组成,详细的划分可分为搜索器、分析器、索引器、检索器和用户接口等5个部分组成。
1、信息采集(Webcrawling):信息采集的工作由搜索器和分析器共同完成,搜索引擎利用称为网络爬虫(crawlers)、网络蜘蛛(spider)或者叫做网络机器人(robots)的自动搜索机器人程序来查询网页上的超链接。
进一步解释一下:"机器人"实际上是一些基于Web的程序,通过请求Web站点上的HTML网页来对采集该HTML网页,它遍历指定范围内的整个Web空间,不断从一个网页转到另一个网页,从一个站点移动到另一个站点,将采集到的网页添加到网页数据库中。"机器人"每遇到一个新的网页,都要搜索它内部的所有链接,所以从理论上讲,如果为"机器人"建立一个适当的初始网页集,从这个初始网页集出发,遍历所有的链接,"机器人"将能够采集到整个Web空间的网页。
网上后很多开源的爬虫程序,可以到一些开源社区中查找。
核心在于html分析,因此严谨的、结构化的、可读性强、错误少的html代码,更容易被采集机器人所分析和采集。例如,某个页面存在<body这样的标签或者没有</body></html>这样的结尾,在网页显示是没有问题的,但是很有可能会被采集拒绝收录,在例如类似../../***.htm这样的超链接,也有可能造成蜘蛛无法识别。这也是需要推广web标准的原因之一,按照web标准制作的网页更容易被搜索引擎检索和收录。
搜索机器人有专门的搜索链接库,在搜索相同超链接时,会自动比对新旧网页的内容和大小,如果一致,则不采集。因此有人担心修改后的网页是否能被收录,这是多余的。
2、索引(Indexing):搜索引擎整理信息的过程称为“建立索引”。搜索引擎不仅要保存搜集起来的信息,还要将它们按照一定的规则进行编排。索引可以采用通用的大型数据库,如ORACLE、Sybase等,也可以自己定义文件格式进行存放。索引是搜索中较为复杂的部分,涉及到网页结构分析、分词、排序等技术,好的索引能极大的提高检索速度。
虽然现在的搜索引擎都支持增量的索引,但是索引创建依然需要较长的时间,搜索引擎都会定期更新索引,因此即便爬虫来过,到我们能在页面上搜索到,会有一定的时间间隔。
索引是区别好坏搜索的重要标志。
3、检索(Searching):用户向搜索引擎发出查询,搜索引擎接受查询并向用户返回资料。有的系统在返回结果之前对网页的相关度进行了计算和评估,并根据相关度进行排序,将相关度大的放在前面,相关度小的放在后面;也有的系统在用户查询之前已经计算了各个网页的网页等级(PageRank 后文会介绍),返回查询结果时将网页等级大的放在前面,网页等级小的放在后面。
不同搜索引擎有不同的排序规则,因此在不同的搜索引擎中搜索相同关键词,排序是不同的。
二、分类目录索引
与全文搜索引擎相比,目录索引有许多不同之处。
首先,搜索引擎属于自动网站检索,而目录索引则完全依赖手工操作。用户提交网站后,目录编辑人员会亲自浏览你的网站,然后根据一套自定的评判标准甚至编辑人员的主观印象,决定是否接纳你的网站。如果审核通过,你网页才会出现于搜索引擎中,否则不会显示。
其次,搜索引擎收录网站时,只要网站本身没有违反有关的规则,一般都能收录成功。而目录索引对网站的要求则高得多,有时即使登录多次也不一定成功。
此外,在登录搜索引擎时,我们一般不用考虑网站的分类问题,而登录目录索引时则必须将网站放在一个最合适的目录。
最后,搜索引擎中各网站的有关信息都是从用户网页中自动提取的,所以用户的角度看,我们拥有更多的自主权;而目录索引则要求必须手工另外填写网站信息,而且还有各种各样的限制。更有甚者,如果工作人员认为你提交网站的目录、网站信息不合适,他可以随时对其进行调整,当然事先是不会和你商量的。
目录索引,顾名思义就是将网站分门别类地存放在相应的目录中,因此用户在查询信息时,可选择关键词搜索,也可按分类目录逐层查找。如以关键词搜索,返回的结果跟搜索引擎一样,也是根据信息关联程度排列网站,只不过其中人为因素要多一些。如果按分层目录查找,某一目录中网站的排名则是由标题字母的先后顺序决定(也有例外)。
目前,搜索引擎与目录索引有相互融合渗透的趋势。原来一些纯粹的全文搜索引擎现在也提供目录搜索。
三、元搜索引擎
元搜索引擎(Meta Search Engine)不是一种独立的搜索引擎,它最显著的特点是没有自己的资源索引数据库,是架构在许多其他搜索引擎之上的搜索引擎。元搜索引擎在接受用户查询请求时,可以同时在其他多个搜索引擎中进行搜索,并将其他搜索引擎的检索结果经过处理后返回给用户。元搜索引擎为用户提供一个统一的查询页面,通过自己的用户提问预处理子系统将用户提问转换成各个成员搜索引擎能识别的形式,提交给这些成员搜索引擎中,然后把各个成员搜索引擎的搜索结果按照自己的结果处理子系统进行比较分析,去除重复并且按照自定义的排序规则进行排序返回给用户。所以,一般的元搜索引擎都包括三大功能结构:提问预处理子系统、检索接口代理子系统和检索结果处理子系统。
结构
一个真正的元搜索引擎由三部分组成,即:检索请求提交机制、检索接口代理机制、检索结果显示机制。"请求提交"负责实现用户"个性化"的检索设置要求,包括调用哪些搜索引擎、检索时间限制、结果数量限制等。"接口代理"负责将用户的检索请求"翻译"成满足不同搜索引擎"本地化"要求的格式。"结果显示"负责所有元搜索引擎检索结果的去重、合并、输出处理等。
元搜索引擎的出现,对于那些需要连续地使用不同的搜索引擎重复相同的检索的人来说,是一个福音。使用元搜索引擎同时对几个搜索引擎进行检索,获得分级编排的检索。
分类
在可以检索的目标搜索引擎、检索提问的处理方式以及如何编译和显示结果方面,元搜索引擎有着很大的差异。有些元搜索引擎一个接一个的搜索目标搜索引擎,另一些则同时进行搜索,有些搜索引擎将检索提问转变成目标搜索引擎的提问语言,而有一些则原封不动的发送给目标引擎。
按功能划分,元搜索引擎包括多线索式搜索引擎和All-in-One式搜索引擎;按运行方式的差异可分为在线搜索引擎和桌面搜索引擎。
前景
元搜索引擎是为弥补传统搜索引擎的不足而出现的一种辅助检索工具,有着传统搜索引擎所不具备的许多优势。但是,元搜索引擎依赖于数据库选择技术、文本选择技术、查询分派技术和结果综合技术等。用户界面的改进、调用策略的完善、返回信息的整合以及最终检索结果的排序,仍然是未来元搜索引擎研究的重点。