学习搜索引擎原理

什么是搜索引擎


搜索引擎是一个帮助用户搜索他们需要内容的计算机程序。换一种说法,搜索引擎把计算机中存储的信息与用户的信息需求 (information need) 相匹配,并把匹配的结果展示出来。

网络爬虫


互联网上的信息存储在无数个服务器上,任何搜索引擎要想回答用户的搜索,首先要把网页存在自己本地的服务器上,这靠的就是网络爬虫。

其次,如何高效的爬取数据也是一个很大的挑战。比如需要有成千上万个爬虫程序同时爬取数据,高效的将数据存储起来以便之后分析等。这种分布式程序的实现是一个相当大的工程。

索引


互联网上的数据千千万万,大海捞针的搜索怎么就这么快?难道 Google 发明了什么逆天科技吗?其实不是。这都要归功于搜索引擎的索引了。


如果要你在一本书里找一个关键词,应该怎么找?假设有充足的时间,最暴力的方法就是从头到尾看一遍,最后总能找到关键词所在的位置。不过这是不是太麻烦了?有更好的方法吗?

有。索引就是帮助程序进行快速查找的。大家都用过新华字典。字典前边的按照偏旁部首查字的部分就是索引。搜索引擎也一样。这里要介绍第一个最重要的数据结构:反转列表(inverted list)。


索引除了反转列表还包含了很多各种数据结构。比如维护文档 ID 到实际文档的 Document Manager,存储每个单词属性信息的 Term Dictionary,存储文档属性的数据结构等等。


搜索


有了索引,就可以快速找到所需内容了。前边说过搜索引擎根据用户的信息需求查找匹配的内容。信息需求来自于用户输入。如何理解它有很大学问。这里用户的输入也富有技巧性,后面会专门学习如何高效使用搜索引擎。


转载自https://www.zhihu.com/question/19937854,有删减