当我们用谷歌搜索某个术语时,我们被告知我们在数千个结果中看到了 k 的 10 个结果。即 10000 个结果中的第 1-10 个结果。 我们可以直接跳到第 50-60 个结果,谷歌将在不到一秒的时间内返回它们。 如果 google 缓存所有 1-40,我想它会浪费 RAM。如果一次性返回所有结果,就会浪费流量。 谷歌如何在排序时返回如此多的搜索结果?
最佳答案
这是我尝试过的: 对于谷歌搜索:
How google search engine works
这是发送到服务器的 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
参数。
那么我经历之后的感受是google search enging working第 2 步(共 3 步):Google 对于超过 30 万亿个网页有自己的索引,并且对于每个查询,他们使用 200 多个因素对结果进行排名。所以我觉得 start
和 sa
参数在获取结果时形成了这些因素之一。
因此我的观点是谷歌不会缓存结果,而是使用不同的网址参数对每个查询进行新的搜索。
编辑:
为了进一步支持我的观察,这里列出了导航到上述搜索查询的不同页面所需的时间:
- 首页:
157,000,000 个结果(0.22 秒)
- 对于第 5 页:
第 5 页,约 157,000,000 个结果(0.26 秒)
第 10 页:
第 10 页,约 157,000,000 个结果(0.30 秒)
第 14 页:
第 14 页约 157,000,000 个结果(0.33 秒)
- 第 18 页:
第 18 页,约 157,000,000 个结果(0.38 秒)
- 第 22 页:
第 22 页,约 157,000,000 个结果(0.35 秒)
- 第 26 页:
第 26 页,约 157,000,000 个结果(0.43 秒)
- 第 30 页:
第 30 页,约 157,000,000 个结果(0.45 秒)
- 第 34 页:
第 34 页,约 157,000,000 个结果(0.40 秒)
- 第 38 页:
第 38 页,共约 371 个结果(0.50 秒)
因此,随着查询页数的增加,时间几乎在增加。如果它缓存结果,则不会出现上述趋势。
关于architecture - google是如何返回这么多搜索结果的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17761448/