搜索引擎组件

时间:2013-12-23 07:58:12

标签: search web search-engine web-crawler

我是一名学习计算机编程的中学生,我对谷歌和雅虎等搜索引擎有一些疑问。

据我所知,这些搜索引擎包括:

  1. 搜索算法&码 (示例:search.py​​文件,接受来自Web界面的搜索查询并返回搜索结果)

  2. 用于查询和显示结果的Web界面

  3. 网络抓取工具
  4. 我感到困惑的是Web爬虫部分。

    谷歌和雅虎的网页抓取工具是否会立即搜索WWW上存在的每个网页?或者他们: 首先下载WWW上的所有现有网页,将它们保存在庞大的服务器上,然后搜索这些保存的页面?

    如果是后者,那么谷歌搜索结果中出现的搜索结果就不会过时,因为我想搜索WWW上的所有网页需要花费大量的时间吗?

    PS。还有一个问题:实际上......网络抓取工具究竟是如何检索WWW上存在的所有网页的?例如,它是否搜索了所有可能的网址,例如www.a.com,www.b.com,www.c.com等等? (虽然我知道这不可能是真的)

    或者有没有办法访问万维网上的所有现有网页? (抱歉问这么愚蠢的问题..)

    谢谢!

1 个答案:

答案 0 :(得分:1)

抓取工具搜索页面,下载并保存(部分内容)以供日后处理。所以,是的,你认为搜索引擎返回的结果很容易过时。几年前他们确实已经过时了。只有相对最近谷歌和其他人开始通过与大型内容提供商(如Twitter)合作,直接和频繁地从他们那里获取数据进行更多的实时搜索,但他们在2011年7月再次离线实时搜索。否则他们会注意到通常网页会发生变化,因此他们知道哪些网页比其他网页更容易抓取。他们有特殊的系统,例如Caffeine web indexing system。另请参阅他们的博文Giving you fresher, more recent search results

所以会发生什么:

  • 抓取工具检索页面
  • 后端服务器处理它们
    • 解析文本,对其进行标记,将其编入索引以进行全文搜索
    • 提取链接
    • 为富片段提取schema.org等元数据
  • 稍后他们会根据提取的数据进行额外的计算,例如
    • 网页排名计算
  • 同时他们可以做很多其他的事情,比如
    • 知识图信息的实体提取

发现要抓取的页面只需从页面开始,然后是以下链接到其他页面并跟踪其链接等。​​除此之外,他们还有其他方式来了解新网站 - 例如,如果人们使用他们的公共DNS服务器,他们将了解他们访问的页面。在G +,Twitter等上分享链接

无法知道所有现有网页的内容。可能有一些没有从任何地方链接,没有人公开分享到它们的链接(并且不使用他们的DNS等),所以他们无法知道这些页面是什么。然后是Deep Web的问题。希望这会有所帮助。

抓取并不是一件容易的事(例如雅虎现在通过微软的Bing外包爬行)。您可以在Page和Brin自己的论文中阅读更多相关内容:The Anatomy of a Large-Scale Hypertextual Web Search Engine

有关存储,架构等的更多详细信息,例如您可以在High Scalability网站上找到:http://highscalability.com/google-architecture