当谷歌搜索某个术语时,我们被告知我们会在数千个结果中看到 k 的 10 个结果。即 10000 个结果中的第 1-10 个结果。我们可以直接跳到第 50-60 个结果,谷歌将在不到一秒的时间内返回它们。如果谷歌会缓存所有 1-40,我想它会浪费 RAM。如果它一次返回所有结果,则会浪费流量。谷歌如何在排序时返回这么多搜索结果?
问问题
1253 次
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 多个因素对结果进行排名。所以我觉得start
和sa
参数在获取结果时构成了这些因素之一。
因此,我的观点是谷歌没有缓存结果,而是使用不同的 url 参数对每个查询进行新的搜索。
编辑:
为了进一步支持我的观察,这里列出了导航到上述搜索查询的不同页面所花费的时间:
- 对于第一页:
157,000,000 results (0.22 seconds)
- 对于第 5 页:
Page 5 of about 157,000,000 results (0.26 seconds)
第 10 页:
Page 10 of about 157,000,000 results (0.30 seconds)
第 14 页:
Page 14 of about 157,000,000 results (0.33 seconds)
- 第 18 页:
Page 18 of about 157,000,000 results (0.38 seconds)
- 第 22 页:
Page 22 of about 157,000,000 results (0.35 seconds)
- 第 26 页:
Page 26 of about 157,000,000 results (0.43 seconds)
- 第 30 页:
Page 30 of about 157,000,000 results (0.45 seconds)
- 第 34 页:
Page 34 of about 157,000,000 results (0.40 seconds)
- 对于第 38 页:
Page 38 of about 371 results (0.50 seconds)
因此,增加查询页数的时间几乎在增加。如果它正在缓存结果,那么以上就不是趋势了。
于 2013-07-20T11:08:45.583 回答