在这个系列文章中,你将学习如何完成一个简单的搜索引擎,以及当有人想要用关键词的搜索你的博客网页时,如何响应查询。
你还将学习网络和互联网是如何工作的,进一步了解如何建立一个你自己的搜索索引。
百度、谷歌这些大型搜索引擎虽然很复杂,但是背后的原理和思想是一样的,所以你也可以知道为什么你输入一个关键词,这些搜索引擎就能给你一串页面答案。
贯穿整个系列的主要计算机科学新思想是:如何建立复杂的数据结构。
你将学习如何设计一个你自己就能搭建的数据结构,这样你就可以在你的爬取的网页里响应查询,而不需要在每次都重新扫描所有的网页。你将为此建立的结构就是索引(Index)。
索引的目标是映射一个关键字和该关键字的位置。例如,在一本书的索引中,你可以看到一个页码,它可以作为一个映射,在哪里可以找到一个术语或概念。
索引中的关键概念会让我们找到我们想要的参考资料。
对于搜索引擎来说,索引为你提供了一个关键词映射到网页列表的方法,也就是这些特定关键词出现的URL。
一旦你完成了建立索引的工作,那么查找的速度真的很快。
决定数据结构是构建软件最重要的部分之一。只要你选对了数据结构,剩下的代码就会容易写很多。我们通过下面这个例题来深入了解一下:
在这些数据结构中,哪种数据结构是表示你的搜索引擎的索引的好方法?
.
.
.
.
.
答案揭晓:最好的选择是d,b紧随其后。选择a和c会非常困难。
下面我来解释一下是为什么:
a -很难阅读,因为所有的东西都在一个列表里。这种结构也会使关键词难以循环。
b -这个选项还可以,但不如d。b的结构是这样的,有一个列表,列表中的每个元素都是一个列表,元素列表本身就是列表。这种结构最大的好处是很容易从urls中分辨出关键词,关键词永远是列表的第一个元素。也更容易去看关键词,因为对于每个列表,你只需要看第一个元素,检查是否是你要找的关键词,如果不是,就继续看下一个。这种结构唯一的缺点是,关键词和urls之间的区别可以更加清晰。
c -