杨烁 任晓菲
摘 要:在浩瀚无边的网络资源中,特别是院校等自建网站的大型单位中,信息检索是一件很困难的工作,而建立搜索引擎显得尤为重要。文章阐述在广域网或局域网下建立信息检索的技术描述,从四个方面进行系统分析。为了使大家加深对信息检索的理解,从原理上解释从指定的Web页面中按照超连接进行解析、搜索,并把搜索到的每条结果进行建立索引。然后通过Web服务器接受客户端请求后,将关键字用ICTCLAS.dll中文切词工具进行切割,将关键字列表在索引中搜索出所匹配的结果,并将其显示给客户。此外,还利用Ajax等一些技术增加了一些自动提示的效果,使得搜索界面更加人性化。
关键词:搜索引擎;网络蜘蛛;Lucene;中文切词
引言
面对浩瀚的网络资源,各区间之间达到资源共享,为尽快达到用户索取资源的目的性而建立搜索引擎,毫不夸张的说所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。伴随着网络的发展,搜索引擎主要经历了三个发展时期。从1994年初始,在“求全”的基础上开展应用,反应速率较慢。从1966年出现分布式方案,采取机器抓取技术,大大提高了检索速度。在2000年左右,在改进二代技术基础上,增加了互动性和个性化,采用自动分类、自动聚类、区域智能识别等技术,成为当今主流搜索引擎技术,提高用户应用效率。
1 搜索引擎的结构
1.1 搜索引擎系统概述
搜索引擎是根据用户的查询请求,按照一定算法从索引数据中查找信息返回给用户。为了保证用户查找信息的精度和新鲜度,搜索引擎需要建立并维护一个庞大的索引数据库。一般的搜索引擎由网络机器人程序、索引与搜索程序、索引数据库等部分组成。
网络机器人程序建立Lucene索引从SQL中搜索信息Tomcat服务器Lucene索引数据库浏览器JSP网络机器人程序、文档网络、机器人程序,建立Lucene索引从SQL中搜索信息Tomcat服务器Lucene索引数据库浏览的机器人程序系统结构图。
1.2 搜索引擎的构成
搜索引擎的工作原理主要指输入一定规则,在相应的数据中抓取存储,进行预处理,组织排名调用索引库数据获取信息。
1.2.1 网络蜘蛛
网络蜘蛛也称为“网络机器人”(Spider),用Myeclipse、MysqL开发,采用Spring+Struts+Hibernate框架构成的系统。
1.2.2 索引与搜索
采用索引技术,采用NON-CLUSTERED方法,生成关键词到URL,并以特定数据结构存储在方式。高度注意提高信息查询的精度,利用信息机制进行过滤和个性化服务,采用分布式结构来提高系统规模和性能返回用户的方式。
1.2.3 Web服务器
Web 服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信,采取超文本连接的概念,利用Blog、Rss、Psdcasting、SNS、WIKI、Page Rank等技术任,使资源比较直观的表现出来。
1.3 搜索引擎的主要指标及分析
搜索引擎的主要指标有响应时间、召回率、准确率、相关度等。这些指标决定了搜索引擎的技术指标,搜索引擎的技术指标决定了搜索引擎的评价标准。具有较快的反应速度和高召回率、准确率是衡量搜索引擎的重要指标,而实现此功能是需要搜索引擎技术指标来保障的。
2 网络机器人
2.1 网络机器人概念
网络机器人称Spider程序,是专业Bot程序的一种,用于查找大量的Web页面。
2.2 网络机器人的结构分析
Internet内存有很多协议,系统层中的协议较为复杂。网页是建立在系统层基于HTTP(Hypertext Transfer Protocol)協议基础上的,而TCP/IP(Transmission Control Protocol/Internet Protocol)是HTTP的基础协议,因此网络机器人就是一种Socket协议。
2.2.1 网络机器程序结构
Spider在不同网页之间跳转,必须找到一个关键点,也就是页面上的超连接。网页代码由网络机器人解析,分解页面内的超连接,通过内部递归结构和非递归结构这两种结构实现Spider程序。URL在同一时间只能在一个队列内,这种状态称为URL状态。
图1表示URL队列工作流程,Spider在URL被加入等待队列中程序被激活运行,Spider程序会按指定方式排序分析网页中URL,直到无列队时工作停止。
2.2.2 Spider程序构造
只有了解Spider程序工作原理及功能扩展,才能构建出高效的Spider程序。
Spider类:这是一个实现了Runnable的类,以便实现多线程提高性能。
此外Spider还实现了Constants,Constants接口实际上是一个定义常量的地方,它定义了一些与线程处理有关的常量。工作流程图如图2所示:
2.2.3 提升程序性能。Web页面资源在互联网中十分丰富,提高Spider程序的效能成为最迫切的需求,就如何提高程序有效性介绍几种技术:(1)Java的多线程技术。多线程技术是指同一程序同时运行多个任务的能力,通过优化内部程序分工,强化程序间关联度,提高和改善程序性能。(2)数据库技术。利用数据库技术是存储网页中站点队列,将网页站点从内存中解放出来,达到提高性能的作用。
2.2.4 Spider代码分析
程序结构图为:
程序代码简要实现如下:
public class Spider extends Logger implements Runnable, Constants
{
private SpiderConfig config;
private DownloadQueue queue;
private Set urlsDownloadedOrScheduled;
private Set urlsDownloading;
private int downloadsInProgress;
private boolean quit;
private int running;
private long lastCheckpoint;
public void start();
public void stop();
private void writeCheckpoint();
public void readCheckpoint();
public void run();
private int queueSize();
private List downloadURL(URLToDownload url, URLGetter urlGetter, HTMLParser htmlParser);
private List filterURLs(List URLs);
}
3 基于lucene的索引与搜索
3.1 Lucene检索简介
Lucene是开放源代码的全文引擎工具包,用java编写方便嵌套各类应用中实现检索的工具。
3.2 Lucene原理分析
3.2.1 Lucene原理。Lucene的API设计功能强大,可以映射到各类软件中,将数据处理为交叉引用查找,提高索引和搜索效率,Lucene类似于索引全文的数据库系统。
3.2.2 Lucene的索引效率。Lucene索引将查询的模糊化变成多个精确查询的逻辑组合过程,进而提高查询的效率。将数据通过全文索引一一建立反向索引,以term匹配数据,实现接口对接支持,以缓冲式批量读取的形式将特别算法匹配率最高的前100条结果输出,用自身算法实现不同语言接口的对接,从优选择符合需要的索引规则,建立最优排序规则,提高索引效率。
3.2.3 中文切分词机制。目前采取比较流行的自动切分算法,这种算法必须要创建相对较为丰富的词库用以识别单字或词,利用规则将多个关键词进行组合,并映射到相应的索引中,查找出所需内容。
4 构建自己的搜索引擎
4.1 为什么要构建自己的搜索引擎
伴随经济发展,信息呈现爆炸式增长的新情况,使用一个入口查寻搜索已经不能用户的需要,提供全面、精确、高效的搜索引擎是满足用户需求的必然要求。
4.2 通过Lucene建立索引
4.2.1 参数设置。建立索引至少需要两个参数:目标文件路径,索引的路径。它可以以配置文件的形式存在,但是简单起见,作者直接用常量在类中了。
4.2.2 建立索引。索引的建立索引的类为LuceneSearch.java,它主要用来搜索数据和处理结果的。
4.3 通过Struts+Tomcat构架系统
有了上面的一些基本功能点,我们还差一个跟用户交互的UI接口,和一个运行B/S模式的web服务器。选用JSP+Struts,Web服务器作者选用Tomcat。
4.3.1 UI和web层设计。UI分成两层,最外一层为跟客户端接触的JSP页面,里面還有一层来处理我们的请求——Action层。
Action层是由Struts技术来完成的。Struts是一种基于MVC设计模式的框架,其中struts-config.xml是其核心配置文件。
4.3.2 基于Tomcat的Web服务器。Web服务器以实现在网络中发布信息、查询数据、处理数据等为目的,可搭建众多应用程序的基础平台。Tomcat是一个免费开放源代码、应用广泛的顶级程序,是运行servlet和JSP Web应用软件的必备程序。由于程序免费、源代码开放、维护及时、技术先进、性能稳定等特点,成为目前较为流行的Web服务器之一,得以广泛的应用。Tomcat服务器由一系列可配置组件构成,核心组件为Catalina Servlet组件,其层次关系如图3:
在Tomcat中,部署应用程序并不复杂,按指定的方法安装调试,即可达到编译效果,提高访问速度。
5 结束语
文章对基于网络的搜索引擎结构和性能指标进行了分析,介绍了网络机器人的基本概念,分析了Spider程序的结构和功能,对一些结合具体代码举例说明,增强了对搜索引擎的了解应用,并加入利用Lucene索引技术阐述,采用Tomcat框架提高交互体验,进一步增强自建探索引擎的效率。
参考文献
[1]卢亮,张博文.搜索引擎原理、实践与应用[M].北京:电子工业出版社,2007,9.
[2]佘正平.搜索引擎的关键词分析与处理[J].情报探索,2008,5.
[3]何会民,韩东霞.基于Lucene的网络新闻搜索引擎研究与实现[J].商场现代化,2008,9.
[4]曾伟辉.深层网络爬虫研究综述[J].计算机系统应用,2008,5.
[5]房志峰.中文搜索引擎中的分词技术研究[J].科学技术与工程,2008,9.
[6]埃克尔著(美),陈昊鹏(译).JAVA编程思想[M].北京:机械工业出版社,2007,6.