总的来说,搜索索引面临以下挑战。
1、页面爬行需要快速而全面
互联网是一动态的内容网络。每天都有无数的页面被更新创造出来,无数的用户发布内容并相互交流。要返回最有用的内容,搜索索引需要抓取新页面。但是,由于页面,在数据库页面中搜索索引寻找蜘蛛将需要很长时间更新当搜索索引引擎诞生时,捕获和更新周期通常以月为单位计算,这就是为什么谷歌在2003年之前有一大更新个月。
现在主流搜索索引已经能够更新重要页面在几天之内,并且将在几小时甚至几分钟之内包括高权重网站上的新文档。然而,这种快速的包含和更新只能限于网站的高权重,并且许多页面在几个月内没有被再次爬行和更新也非常常见。
为了返回更好的结果,搜索引擎索引还必须尽可能全面地搜索抓取一页面,这需要解决许多技术问题。有些网站不利于搜索引擎索引爬行和爬行蜘蛛,例如网站链接的结构缺陷以及闪存和Java脚本的广泛使用。或者内容,用户在访问该部分之前必须登录,这都增加了搜索索引和爬行内容的难度。
2,海量数据存储
一一些大的网站有数百万、数千万甚至上亿页面在一件网站上。你可以想象所有网站件页面上网络的数据加起来是多少。在搜索索引蜘蛛抓取页面之后,必须有效存储这些数据
除了页面数据,搜索索引服务器还需要存储链接和页面之间的大量历史数据,这超出了用户的想象。据估计百度有超过340万台服务器,谷歌有十数据中心和数百万台服务器。如此大规模的数据存储和访问将不可避免地面临许多技术挑战。
我们经常看到搜索结果在排名上下波动,没有明显的原因。我们甚至可以刷新页面并查看不同的排名。有时网站数据会丢失,这可能与大规模数据存储和同步的技术困难有关。
3、索引处理快速、高效且可扩展
在搜索索引并搜索和存储页面数据之后,需要索引处理,包括链接关系计算、正向索引、反向索引。由于数据库中有大量的页面,执行pr等迭代计算既费时又费力。为了提供相关和及时的搜索结果,只有抓取是无用的,同时需要进行大量索引计算。由于新数据和页面将随时添加,因此索引处理也应具有良好的可扩展性。