有人知道Google或Yahoo如何针对非常大量的数据执行关键字搜索吗?他们为此使用何种数据库或技术?

花费了几毫秒的时间,但是索引了十亿个页面。

评论

关于堆栈溢出也有类似的问题:stackoverflow.com/questions/362956/…

#1 楼

我确信这是一种综合的情况:


严重的硬件

它很多-数据在许多节点和不同数据中心之间分布和复制


(实际上,至少在Google案例中,我相信它们有成千上万个真正的低端服务器)


很多常见的查询'结果被缓存,请注意它们如何预先填充潜在的搜索,以查找您从未搜索过的内容;他们正在预测您可能要搜索的内容,并希望他们已经预先计算了结果并将其缓存在某个地方。在许多情况下,他们都这样做-今天,您在Google上提出的搜索请求很少,而您之前从未有人提出过这样的请求。当他们确实得到一个新的搜索词组时,他们可能会使用自由文本搜索之类的方法-我希望在第一次爬网页面时从语义上提取关键字,而不是在搜索它们之后尝试在文档中查找关键字。当然,他们确实必须定期使那些缓存无效,重新计算页面排名并在其缓存中分配新的缓存结果-我敢肯定这背后还有很多严肃的工程。


#2 楼

Pigeons。
Google搜索技术的核心是PigeonRank™,它是由斯坦福大学的Google创始人Larry Page和Sergey Brin开发的网页排名系统:


BF Skinner,Page和Brin的突破性工作认为,低成本的鸽子群(PC)可以比人工编辑器或基于机器的算法更快地计算网页的相对价值。尽管Google有数十名工程师每天都在改善我们服务的各个方面,但PigeonRank仍在为我们所有的网络搜索工具提供基础。
为什么Google获得专利的PigeonRank™如此好用
PigeonRank的成功主要取决于家用鸽子(Columba livia)的出色训练能力以及其识别物体的独特能力,而不受空间取向的影响。普通的灰鸽子可以轻松地区分仅显示微小差异的项目,从而能够从成千上万个相似的页面中选择相关的网站。
通过在密集的集群中收集成群的鸽子,Google能够处理搜索查询的速度要优于传统的搜索引擎,传统搜索引擎通常依靠猛禽,育雏母鸡或慢速运动的水禽来进行相关性排名。
当搜索查询提交给Google时,它会路由到数据监视监视器以极快的速度刷新结果页面的地方。当集群中的一只鸽子观察到相关结果时,它会用喙撞到涂有橡胶的钢筋,从而将页面的PigeonRank值指定为1。每啄一次,PigeonRank都会增加。那些啄最多的页面将返回到用户结果页面的顶部,其他结果将按啄顺序显示。


评论


注意:此页面发布为2002年愚人节

– jimbob博士
2012年6月1日20:51

#3 楼

重要的是,请牢记有关google的几点注意事项:


他们的数据库是专有的BigTable-它是由GOOGLE定制设计的,完全适合他们的需求
他们的专有数据库是在其专有文件系统-Google文件系统的基础上构建的,该文件系统也是由GOOGLE设计的,可以使用常见的商品硬件轻松扩展。正如亚伦(Aaron)在回答中所提到的那样,它们具有大量的普通服务器,而不是少数的非常强大的服务器。

它们在多台计算机上存储单个表,以使访问速度更快-他们的软件知道哪些数据在哪台计算机上,而无需通过磁盘进行定位即可直接将带有相关信息的信息发送到服务器。

#4 楼

Google不使用传统的关系数据库技术。它开发了自己的技术,大表和地图缩小。原始研究论文在这里:大表和Map / Reduce。同样有趣的是SSTable,排序后的字符串表。

#5 楼

阅读史蒂文·列维(Steven Levy)的“ In the Plex:Google如何思考,运作和塑造我们的生活”。这本书是一本关于Google一切的有趣读物,并且确实在高层次上讨论了搜索背后的一些技术和工程。亚伦在回答中确实很好地总结了这一点,利维的书将为您提供有关其工作方式的更多详细信息。