郝琳静
(天津港信息技术发展有限公司 天津市 300456)
基于JAVA技术的搜索引擎探析
郝琳静
(天津港信息技术发展有限公司 天津市 300456)
面对着海量的互联网数据信息,人们能够通过搜索引擎技术更快、更精准地定位到自己所需的信息。因此,本文主要基于搜索引擎的组成及工作流程,首先分析了搜索引擎实现中的网页抓取技术、索引技术以及搜索技术,最后详细探讨了基于JAVA技术的搜索引擎实现过程。
JAVA技术;搜索引擎;分析
自从1994年我国正式接入国际互联网以来,至今已经20余年,2015年我国还在乌镇成功举办了第二届世界互联网大会,可见,互联网在我国快速发展的同时,还在深刻影响着我们的生产和生活。伴随着互联网的快速发展,海量信息的产生也是必然的结果,在这种背景下就诞生了搜索引擎技术,使得人们能够有效在海量的内容中快速、精准地定位到自己所需的信息。目前我国国内的主流搜索引擎主要有百度、搜狗、中搜等等,而本文主要结合JAVA技术对搜索引擎的设计和实现进行了分析。
1.1 搜索引擎的组成
网络蜘蛛、索引器以及检索器是搜索引擎三个主要的组成部分,其中网络蜘蛛的主要作用是从指定的IP地址或者网页出发遍历互联网以收集网页,同时基于任何网页中的所有URL爬到其他的网页并对这一过程进行重复,将所有爬过的网页收集存储到页面存储库中;索引器主要是对所有收集回来的网页进行再次分析,将网页中的编码类型、内容、关键词等各种信息进行提取,然后基于一定的额相关度算法进行大量复杂的计算,得到每一个页面内容的相关度,最后建立网页索引数据库;检索器主要面对用户,当用户向查询服务器输入关键词进行检索后,由其从网页索引数据库中找到符合该关键词的所有相关网页。
1.2 搜索引擎的工作流程
搜索引擎典型的工作流程主要如图1所示。
图1 搜索引擎的工作流程图
2.1 网页抓取技术
网页抓取技术是搜索引擎应该进行的第一步工作,通过该技术能够在WEB上对网页信息进行收集并将其存入到页面存储库中。目前很多搜索引擎应用的主要是一个叫做网络蜘蛛的机器人程序来完成该项工作。不过,互联网信息非常大,想要全部抓取也是不可能的,这时候就需要采取有效的网页抓取方法。常用的网页抓取策略主要有深度优先与广度优先两种,在搜索引擎的设计中应该结合搜索引擎的实际情况进行选取。此外,还应该对抓取周期与抓取内容进行详细的分析。
2.2 索引建立和搜索技术
当搜索引擎将网页抓取收集回来并放入到页面存储库之后,便需要进行索引库的建立,从而为搜索器的工作提供基础。而在索引的建立中:①便是要进行网页内容的分析,而在网页内容的分析中,词的识别是关键所在,这是因为搜索引擎都是以词为基本搜索单位的,而本文采用了中文分词技术;②为了加快信息的检索速度,搜索引擎还要根据页面存储库来建立相应的索引,在建立索引时需要对网页结构、无用词汇的过滤以及图像标记的处理等内容进行考虑。同时,搜索技术的主要目的是对用户的搜索请求进行响应和满足,一般情况下,用户输入关键词后,服务器对应关键词词典,将搜索关键词进行转化、扫描和匹配,最后提取出满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回前N篇的结果给用户。
本文主要基于JAVA技术对搜索引擎的网络蜘蛛、索引器以及搜索器等三个关键的部分进行了实现,从而有效完成了搜索引擎的基本功能。
3.1 JAVA技术分析
在设计与实现搜索引擎之前,应该安装相关的软件,本文所用到的软件主要有JAVA程序开发包(java 2 platform standard edition 6.0)、JAVA类库(Lucene3.6.1)以及Servlet/JSP容器(Tomcat6.0)三个。其中Lucene 3.6.1主要用于实现索引和搜索。在搜索引擎的实现中,主要使用了JAVA如下几种技术:
(1)为了实现网络蜘蛛的抓取网页功能,需要实现与WEB服务器的通信功能以进行网页的下载,而JAVA提供了许多支持Internet的类。而这些类主要包括套接字类与和URL地址一起工作的URL类;
(2)为了避免在网页抓取中出现的汉字乱码现象,还用到了JAVA技术的汉字处理技术;
(3)为了大幅度提升网页抓取、索引建立以及搜索等的工作效率,需要用到JAVA技术的多线程机制;
(4)有时候网络蜘蛛需要访问大量的网站,就需要有一种有效的方式来存储驱动网络蜘蛛的站点队列,这个列表往往是比较庞大的,而此时便需要采用JAVA技术的JDBC提交SQL命令来操作数据库。
3.2 搜索引擎的实现
在网络蜘蛛的实现中,可以利用JAVA对HTTP协议的内建支持,通过相关的接口和类来进行实现。用到的JAVA接口和类主要有Spider类、ISpiderReportable接口、IWorkloadStoralbe 接口、SpiderWorker类以及 SpiderDone类等。然后利用Lucene的高性能和易于扩展的IR类库来实现索引和搜索功能。由于Lucene完全是由JAVA来实现的,具有非常良好的跨平台性。
通过本文所述的技术实现的搜索引擎达到了预期的目标,如图2展示了本文所实现的搜索引擎网页抓取程序的运行截图。由于在搜索引擎中应用了多线程机制,具有很高的工作效率,不过在抓取动态页面方面还有着一定的限制,都需要在未来进一步完善。
图2 网页抓取程序的运行截图
综上所述,本文应用JAVA技术顺利地实现了搜索引擎的基本功能,在工作效率等方面都达到了预期的效果,不过由于在动态网页的抓取方面还受到一定的限制,本文所述的方法还有一定的进步空间。
[1]雷斌.基于JAVA技术的智能化搜索引擎的研究与设计[D].哈尔滨工程大学,2010.
[2]褚丽莉.基于JAVA的搜索引擎技术在Web信息挖掘中的应用[J].辽宁工程技术大学学报(自然科学版),2010,05:1006~1008.
[3]房志峰,赵恒永.基于JAVA技术的搜索引擎文件服务系统设计[J].计算机与数字工程,2006,06:144~147.
[4]王畅.基于JAVA技术的搜索引擎基本组成和数据结构探究[J].今日科苑,2011,06:109~110.
[5]罗兴荣.探讨JAVA搜索引擎Nutch中文搜索技术[J].数字技术与应用,2013,10:181.
TP391.3
A
1004-7344(2016)08-0286-02
2016-2-22