搜索引擎的工作原理主要经过了四个步骤:
第一步:自动下载网页
要提供搜索服务,服务提供商需要根据搜索的内容遍历全世界所有的网站内容。如果实时的去遍历,这需要一个时间非常长的,让人难以接受的过程。如果想加快这个过程,就需要将全世界的网站保留在本地,并且不断的更新。这里将用到一项技术--网络爬虫。
网络爬虫的工作原理:假定从一家门户网站的首页出发,先下载这个网页,然后通过分析,可以找到网页的所有超链接,也就等于知道了这个网站的所连接的所有网页。接下来访问、下载并分析这家门户网站的连接,又能找到其他相关连的网页。让计算机不停的下去,就能下载整个互联网。所以搜索引擎的带宽是非常大的,需要不停的下载、更新网页内容。保存这些页面,不是一台计算机就能完成的,这需要大量的服务器,所以从另一方面讲,服务器的多少关系着一个搜索引擎是否权威。
但是,如何知道这些门户网站的地址,也就是第一个入口呢?这就需要拿到全球的13台根DNS的注册信息,知道了这些信息,就等于知道了互联网的入口。
这里有一个问题,同一个网页可能被很多很多不同的网页所链接,怎么区分它们,以防止同一个网页被保存多份?这就需要将对每一个网页保存在数据库中来做对比,如果存在,则不再保存。并且对每一份网页内容做哈希值,来检查是否有更新。
到此,整个互联网内容已经保存到本地了。
第二步:建立索引
大部分使用搜索引擎的人都会吃惊为什么它能在零点几秒找到成千上万甚至上亿的搜索结果。显然如果扫描所有文本,计算机扫描的速度再快也不能完成。要做到这一点,有一个技巧,那就是为每一个网页建立索引。
建立索引是一个非常复杂的过程,计算机怎么才能自动的分析出网页的主题,那些词是关键字。这需要计算机足够聪明,但让计算机理解人类的语言几乎不可能,科学家采用了统计的方法,并且过滤了非关键字词的出现,例如“的”、”是“等词。这样通过一个良好的数学模型计算出每个网页的关键字,然后保存在数据库中。
到此,在用户搜索关键字时,通过比对这些网页的关键字,就能很快的过滤出需要的网页。
第三步:衡量网页的质量
但是搜索出这么多的网页,这些网页哪些是可信哪些不可信,计算机是无法区分的。为解决这个问题,google的工程师采用了pagerank的算法,这也成为google的杀手锏。算法的基本思想是:被链接数量越多的网页的可靠性就会更高,并且这种可靠性是可以叠加,这样就产生了一个度量值。早期google的排名就是通过这个度量值来计算的。
至此,网页已经过滤,排名的度量值也已经计算出,但是要想提供更好的排名,还需要进一步确定那些是用户想要的。
第四步:确定页面与查询的相关性
搜索关键词权重的科学度量TF-IDF
要确定相关性,有一个需要解决的问题,就是关键词出现较多的网页比出现较少的网页相关,也就是长网页比短网页出现的关键词要多。并且确定每个关键词的权重。一个词预测主题的能力越强,权重越大,反之权重越小。并且停止词的权重为零,包括”是“,”和“,”中“,”地“等几十种。
至此搜索引擎就能比较好的提供搜索服务,并且提供一个可信的排名了。