搜索引擎的整个工作过程包括三个部分:
1、抓取
搜索引擎为想要抓取互联网站的页面,不可能手动去完成,那么百度,google的工程师就编写了一个程序,他们给这个自动抓取的程序起了一个名字,蜘蛛(也可以叫做“机器人”或者“网络爬虫”)。
互联网上的信息存储在无数个服务器上,任何搜索引擎要想回答用户的搜索,首先要把网页存在自己本地的服务器上,这靠的就是网络爬虫。它不停的向各种网站发送请求,将所得到的网页存储起来。
通常的做法是利用网页之间的链接从一个网页出发,提取出指向其他页面的链接,把它们当成将下次要请求的对象,不停重复这个过程。有很多细节要被考虑。比如避免循环链接的网页解析网页文档,提取里边的链接当链接无法打开时对错误进行处理等。
2、索引
索引就是帮助程序进行快速查找的。大家都用过英汉词典。字典前边的按照单词首字母排列的部分就是索引。搜索引擎也一样。这里要介绍第一个最重要的数据结构:反转列表。
搜索引擎所拥有的文档中出现的每一个单词都拥有一个反转列表。它记录了这个单词在多少文档中出现,分别是哪些文档,每个文档分部出现多少次,分别出现在什么位置等信息。这样当搜索相关单词时,Google就不用遍历所有的文档,只需要查找每个单词对应的反转列表就可以知道这个词在哪里出现了。
每一个网络文档不仅只有文本信息。它还可能包括文件名,引用等部分。为了提高搜索质量,搜索引擎需要对文档的不同部分分别处理,构造反转列表。每一部分的单词都要被加入到这个词属于此部分的反转列表里。
3、搜索
有了索引,就可以快速找到所需内容了。前边说过搜索引擎根据用户的信息需求查找匹配的内容。信息需求来自于用户输入。搜索引擎用把用户输入的搜索字符进行一些类似于创建索引时对文本的处理,然后生成解析树。总之,以上技巧最终目标是帮助搜索引擎更好理解用户的信息需求,以便查找出更高质量的文档。
4、排序
用户输入的关键词,就可以查看到相关的内容了。这个时候,就会一条一条的展示,那谁排在第一,谁排在第二,我们把这种结果的排序,称为排名。
排名会是很复杂的,系统会对其进行一系列复杂的分析,并根据分析的结论在索引库中寻找与之最为匹配的一系列网页,按照用户输入的关键词所体现的需求强弱和网页的优劣进行打分,并按照最终的分数进行排列。