考虑以下搜索结果:
- 谷歌搜索“大卫” ——0.28秒内点击5.91 亿次
- Google for 'John' - 7.85 亿次点击在 0.18 秒内
好的。页面是索引的,只需要查找索引表中的计数和前几项,速度是可以理解的。
现在考虑使用 AND 操作进行以下搜索:
- Google for 'David John' ('David' AND 'John') -在 0.25 秒内获得1.73 亿次点击
这让我很兴奋 ;) 搜索引擎到底如何才能如此快地获得对巨大数据集进行 AND 运算的结果?我看到以下两种执行任务的方法,它们都很糟糕:
- 你进行了“大卫”的搜索。拿起巨大的临时表并在其上搜索“John”。但是,临时表没有被“John”索引,因此需要蛮力搜索。无论您拥有什么硬件,这都不会在 0.25 秒内计算出来。
- 通过所有可能的单词组合(如“David John”)进行索引。然后我们面临着密钥数量的组合爆炸,甚至谷歌也没有存储容量来处理它。
您可以将任意数量的搜索词组合在一起,并且您仍然可以在 0.5 秒内获得答案!如何?