摘要:高性能网络机器人是新一代Web智能搜索引擎的核心,网络机器人是否高效直接影响搜索引擎的效能的发挥。对开发高性能网络机器人所涉及的关键技术和算法进行了详细地分析。最后,给出了程序的关键类,有助于工程的实际应用和开发。
关键字:Web ;搜索引擎;网络机器人;Java
1 高性能网络机器人程序的研究意义
Web搜索引擎技术是当今网络信息处理领域的一个热点和难点。Web可以看作是一个庞大的分布式网络数据库,对于这样一个信息量飞速增长的数据库,如果人工地去检索和分类整个Web将是一项非常巨大的工程,因此在搜索引擎技术中我们必须采用网络机器人在完成这项任务,我们研究的网络机器人程序就是这么一种专业化的能高效地扫描Web站点并检索其内容的程序。
网络机器人程序是Web搜索引擎技术中关键的一部分,一般的搜索引擎由网络机器人、索引器、检索器和用户接口、Internet网络等五部分组成,简单地说,网络机器人程序的功能就是在Web上自动地搜索采集网页。但是随着用户需求的不断提高,目前基于关键字查询的搜索引擎已经不能满足用户对搜索结果要求更准、搜索范围更大的需求。因此新一代的智能搜索引擎要求网络机器人程序具有更高的性能,能够更快更新网页、更广搜索网页,所以研究高性能的网络机器人程序对搜索引擎的发展具有直接的现实意义和重要的学术价值。
2 Java套接字编程
网络是一个客户与服务器的世界,在网络上的几乎所有程序都是在处理客户进程和服务器进程之间的对话,我们所研究的网络机器人程序是浏览Internet的客户/服务器的程序。想到Interne会自然的想到Web,Web是一种建立在HTTP之上的协议,而HTTP又是建立在TCP/IP之上的协议,它同时也一种套接字协议,因此我们可以这样说,Internet的实质就是采用套接字连接TCP/IP协议的网络。
Java有非常简单的套接字编程,Java定义了两个类:Socket和ServerSccket,它们是利用Java进行网络编程的重要类。如果编写的程序是扮演服务器的角色,就应该采用ServerSocket类;如果程序是连接到服务器的那么他扮演的是客户端的角色,我们应该使用Socket类,我们研究的网络机器人程序扮演的就是客户端的角色。
3 关键技术的研究
网络机器人程序的工作是异常繁重的,好像永远都不会结束,网络机器人一边访问网页,一边又要查找下一步要访问的网页,访问了一个站点以后,仍然会有其它站点加入队列中,网络机器人程序的作业是按指数级增长的,所以对于大型的智能搜索引擎来说,提高网络机器人程序的效率是非常重要的,以下是开发高性能的网络机器人程序不可或缺的技术。
3.1 多线程技术
对于一个程序员来说,要掌握多线程的编程技术确实有些难度,但更难的是,要确定什么时候需要用到多线程技术、怎么划分线程。多线程是一个应用程序在同一时刻运行超过一个任务的能力,多线程是发生在一个应用程序内部的,它们使用同一内存空间,所以一个进程的所有线程可以很容易地共享全局数据和资源。
网络机器人程序需要下载数十个甚至成百上千的网页,如果我们采用单线程来完成这一任务,效率是十分低的,程序的瓶颈就在于网络机器人程序在向服务器发出下载网页的请求后必须等待服务器的响应,可想而知,单线程技术需要一个接一个地去等待服务器的对请求的响应,等待时间将是对每一个网页请求等待响应的时间累加。
网络机器人程序必须采用多线程技术,多线程技术允许对成百上千的网页的等待时间结合在一起,众多的线程让网络机器人程序能同时等待大量的网页,而不是让它们一个接一个的执行。