根据经验,一般下载一篇网页大约需要1s左右,所以在用户查询时即时搜索是不太现实的,所以搜索引擎服务应该事先搜索一批网页。这批网页如何维护?两种基本的考虑:
定期搜索,也称批量搜索,每次搜索替换上一次的内容。每次搜索都重新来,每次搜索开销比较大,两次搜索的间隔比较长。好处:系统实现简单,时效性不高,还有重复搜索带来的额外带宽需要。
增量搜索,开始时搜索一批,往后只是搜索新出现的网页、更改有变化的网页和删除已经不存在的网页。增量搜索时效性比较高,但是系统实现复杂,这种复杂性不仅在于搜索过程,而且在于建立索引的过程。
当然,在具体的实现中,很可能是这两种极端的折中考虑。J. Cho博士根据网页变化模型和系统所含内容时新性的定义,提出了相应优化的网页搜集策略。其中一个有趣的结论是:在系统搜集能力一定的情况下,若有两类网页(例如“商业”和“教育”),它们的更新周期差别很大(例如“商业”类网页平均更新周期是“天”,而“教育”类网页平均更新周期是“月”),则系统应该将注意力放在更新慢的网页上,以使系统整体的时新性达到比较高的取值。
在具体的搜索过程中,如何抓取一篇篇网页,也有不同的考虑,常见的一种是所谓“爬取”:将Web上的网页集合看成是一个有向图,搜集过程从给定起始URL集合S(或者说“种子”)开始,沿着网页中的链接,按照先深、先宽、或者某种别的策略遍历,不停的从S中移除URL,下载相应的网页,解析出网页中的超链接URL,看是否已经被访问过,将未访问过的那些URL加入集合S。整个过程可以形象地想象为一个蜘蛛(spider)在蜘蛛网(Web)上爬行(crawl)。
另外一种可能的方式是在第一次全面网页搜集后,系统维护相应的URL集合S,往后的搜集直接基于这个集合。每搜到一个网页,如果它发生变化并含有新的URL,则将它们对应的网页也抓回来,并将这些新URL也放到集合S中;如果S中某个url对应的网页不存在了,则将它从S中删除。这种方式也可以看成是一种极端的先宽搜索,即第一层是一个很大的集合,往下最多只延伸一层。
还有一种方法是让网站拥有者主动向搜索引擎提交它们的网址,系统在一定时间内定向向那些网站派出“蜘蛛”程序,扫描该网站的所有网页并将有关信息存入数据库中。大型商业搜索引擎一般都提供这种功能。