08 简单之美(布尔代数和搜索引擎)
一个搜索引擎大致需要做三件事:
1.自动下载尽可能多的网页;
2.建立快速有效的索引;
3.根据相关性对网页进行公正准确的排序。
布尔代数
布尔代数有计数和逻辑两种使用方式。
作为逻辑方式买他的基本运算有“与或非”三种,但都可以转换成“与非”这一种运算。
可以使用逻辑值1表示某文献中含有用户输入的关键词,用逻辑值0表示某文献中不含有用户输入的关键词。
索引
最简单的索引结构是用一个很长的二进制数表示一个关键字是否出现在每篇文献中。
例如:结果0001001表示第4篇、第七篇文献满足用户的要求。
利用索引和布尔代数结合,通过布尔运算AND来生成满足多个输入条件的结果。
现在,为了保证对任何搜索都能提供相关的网页,常见的搜索引擎都会对所有的词进行索引。(极具挑战性)
因此,这些索引需要通过分布式的方式存储到不同的服务器上。
普遍做法:
根据网页的序号将索引分成很多份(Shards),分别存储到不同的服务器中。每当接收一个查询时,这些查询就被分发到许许多多的服务器中,这些服务器同事并行处理用户请求,并把结果送到主服务器进行合并并处理,最终将结果返回给用户。
由于数据量越来越大,需要根据网页的重要性、质量、访问频率建立常用和非常用等不同级别的索引。
常用索引:访问速度快、附加信息多、更新快。
结束语:(人们)发觉真理在形式上从来是简单的,而不是复杂和含混的。 ——牛顿