一般来说,搜索引擎面临以下挑战。
1。页面抓取需要快速和全面
互联网是一个动态的内容网络。每天都有无数的页面被更新和创建,无数的用户发布内容和相互交流。回归有用的内容,搜索引擎需要抓取新的页面,但是由于页面数量巨大,搜索引擎蜘蛛更新一次数据库中的页面需要很长时间。搜索引擎刚诞生的时候,抓取和更新周期通常是按月计算的,这也是谷歌在2003年之前每个月都有一次大更新的原因。
如今,主流搜索引擎已经能够在几天内更新重要页面,并在几小时甚至几分钟内收录高权重网站的新文档。但是这种快速收录和更新只能局限于高权重的网站,很多页面几个月内不重新抓取和更新也很常见。
为了返回更好的结果,搜索引擎还必须尽可能全面地抓取一个页面,这需要解决很多技术问题。有些网站不利于搜索引擎的抓取和抓取,比如网站链接结构的缺陷,Flash和Java脚本的大量使用,或者用户访问这部分内容必须登录,这些都增加了搜索引擎抓取内容的难度。
2。海量数据存储
有些大型网站一个网站有几百万,几千万,甚至上亿的页面。你可以想象一下,网络上所有网站的页面加起来有多少数据。搜索引擎蜘蛛抓取页面后,还必须有效地存储这些数据。数据结构必须合理,可扩展性强,要求读写速度快。
除了页面数据,搜索引擎还需要存储页面之间的链接和大量的历史数据,这是用户无法想象的。据估计,百度有340多万台服务器,谷歌有几十个数据中心,几百万台服务器。这种大规模的数据存储和访问将不可避免地面临许多技术挑战。
我们经常看到搜索结果中的排名上下波动,没有明显的原因。我们甚至可以刷新页面,检查不同的排名。有时候网站数据会丢失,可能跟大规模数据存储和同步的技术难点有关。
3。索引处理快速、高效且可扩展
搜索引擎抓取并存储页面数据后,还需要进行索引处理,包括链接关系计算、前向索引、反向索引等。由于数据库中页面数量巨大,进行pr等迭代计算既费时又费力。为了提供相关及时的搜索结果,光是抓取是没有用的,同时还需要大量的索引计算。因为随时会添加新的数据和页面,所以索引处理也应该具有良好的可伸缩性。
4。快速准确的查询处理是普通用户都能看到的搜索引擎步骤
当用户在搜索框中输入一个查询并点击“搜索”按钮时,通常不到一秒钟就能看到搜索结果。简单的表面处理实际上涉及到非常复杂的背景处理。在后期查询阶段,更重要的问题是如何在不到一秒的时间内,从几个、几百万甚至几千万个包含搜索词的页面中,快速找到合理的、相关的页面,并按照其相关性和权威性进行排列。
5。判断用户意图和人工智能
应该说搜索引擎的前四个挑战已经得到了较好的解决,但是对用户意图的判断还处于初级阶段。不同的用户搜索相同的查询词可能会找到不同的内容。比如,用户在搜索“苹果”时,是想了解苹果的果实、苹果电脑,还是想了解电影《苹果》的信息?还是他想听《苹果》?没有语境,没有对用户个人搜索习惯的了解,他无法判断。
搜索引擎目前正在根据用户的搜索习惯、历史数据积累和语义搜索技术来判断搜索意图,理解文档的真实含义并返回更多的相关结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)