了解搜索引擎排名的基础知识,包括“反向索引”、“向量空间模型”、“余弦相似度”、“PageRank”等思想。
但是,当用户提交一个热门查询词时,很可能有数百万个页面包含该词。因此,搜索引擎仍然需要对这数百万个页面进行实时排序。例如,我刚刚尝试在 Google 中搜索“Barack Obama”。它显示“大约 937,000,000 个结果(0.49 秒)”。在 0.5 秒内排名超过 9 亿个项目?这真的让我大吃一惊!
搜索引擎如何在 1 秒内对如此大量的项目进行排序?谁能给我一些直观的想法或指出参考?
谢谢!
更新:
- 到目前为止,大多数回应(包括一些较早的讨论)似乎都将功劳归功于“反向索引”。但是,据我所知,反向索引仅有助于找到“相关页面”。换句话说,通过反向索引,谷歌可以获得包含“巴拉克奥巴马”的 9 亿页(超过数十亿页)。但是,目前还不清楚如何根据我目前阅读的线程对这数百万个“相关页面”进行“排名” 。
- MapReduce 框架不太可能成为实时排名的关键组件。 MapReduce 专为批处理任务而设计。当向 MapReduce 框架提交作业时,响应时间通常至少为一分钟,这显然太慢了,无法满足我们的要求。