2

当谷歌搜索某个术语时,我们被告知我们会在数千个结果中看到 k 的 10 个结果。即 10000 个结果中的第 1-10 个结果。我们可以直接跳到第 50-60 个结果,谷歌将在不到一秒的时间内返回它们。如果谷歌会缓存所有 1-40,我想它会浪费 RAM。如果它一次返回所有结果,则会浪费流量。谷歌如何在排序时返回这么多搜索结果?

4

1 回答 1

3

这是我尝试过的:对于谷歌搜索:

谷歌搜索引擎的工作原理

这是发送到服务器的 url:

https://www.google.co.in/?gws_rd=cr#gs_rn=20&gs_ri=psy-ab&tok=v1e-J_ynDKaPw_oDlFH-HA&cp=30&gs_id=8&xhr=t&q=how+google+search+engine+works&es_nrs=true&pf=p&output=search&sclient=psy-ab&oq=how+google+search+engine+works&gs_l=&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv.49478099,d.bmk&fp=56e0e38cda57afa7&biw=1280&bih=899

如果我选择页面底部的第 5 页链接,这是正在发送的 url:

https://www.google.co.in/?gws_rd=cr#q=how+google+search+engine+works&ei=qm3qUeXSA4LqrAfXtYDoCg&sqi=2&start=40&sa=N&bav=on.2,or.r_cp.r_qf.&bvm=bv.49478099%2Cd.bmk%2Cpv.xjs.s.en_US.c75bKy5EQ0A.O&fp=56e0e38cda57afa7&biw=1280&bih=899

请注意此处的附加start=40&sa=N参数。

因此,在通过谷歌搜索引擎工作的第 2 步(共 3 步)之后,我的感觉是,谷歌拥有自己的索引,用于超过30 万亿个网页,并且对于每个查询,他们使用 200 多个因素对结果进行排名。所以我觉得startsa参数在获取结果时构成了这些因素之一。

因此,我的观点是谷歌没有缓存结果,而是使用不同的 url 参数对每个查询进行新的搜索。

编辑:

为了进一步支持我的观察,这里列出了导航到上述搜索查询的不同页面所花费的时间:

  1. 对于第一页:157,000,000 results (0.22 seconds)
  2. 对于第 5 页: Page 5 of about 157,000,000 results (0.26 seconds)
  3. 第 10 页: Page 10 of about 157,000,000 results (0.30 seconds)

  4. 第 14 页: Page 14 of about 157,000,000 results (0.33 seconds)

  5. 第 18 页: Page 18 of about 157,000,000 results (0.38 seconds)
  6. 第 22 页: Page 22 of about 157,000,000 results (0.35 seconds)
  7. 第 26 页: Page 26 of about 157,000,000 results (0.43 seconds)
  8. 第 30 页: Page 30 of about 157,000,000 results (0.45 seconds)
  9. 第 34 页: Page 34 of about 157,000,000 results (0.40 seconds)
  10. 对于第 38 页: Page 38 of about 371 results (0.50 seconds)

因此,增加查询页数的时间几乎在增加。如果它正在缓存结果,那么以上就不是趋势了。

于 2013-07-20T11:08:45.583 回答