郝琳靜
(天津港信息技術(shù)發(fā)展有限公司 天津市 300456)
基于JAVA技術(shù)的搜索引擎探析
郝琳靜
(天津港信息技術(shù)發(fā)展有限公司 天津市 300456)
面對(duì)著海量的互聯(lián)網(wǎng)數(shù)據(jù)信息,人們能夠通過(guò)搜索引擎技術(shù)更快、更精準(zhǔn)地定位到自己所需的信息。因此,本文主要基于搜索引擎的組成及工作流程,首先分析了搜索引擎實(shí)現(xiàn)中的網(wǎng)頁(yè)抓取技術(shù)、索引技術(shù)以及搜索技術(shù),最后詳細(xì)探討了基于JAVA技術(shù)的搜索引擎實(shí)現(xiàn)過(guò)程。
JAVA技術(shù);搜索引擎;分析
自從1994年我國(guó)正式接入國(guó)際互聯(lián)網(wǎng)以來(lái),至今已經(jīng)20余年,2015年我國(guó)還在烏鎮(zhèn)成功舉辦了第二屆世界互聯(lián)網(wǎng)大會(huì),可見,互聯(lián)網(wǎng)在我國(guó)快速發(fā)展的同時(shí),還在深刻影響著我們的生產(chǎn)和生活。伴隨著互聯(lián)網(wǎng)的快速發(fā)展,海量信息的產(chǎn)生也是必然的結(jié)果,在這種背景下就誕生了搜索引擎技術(shù),使得人們能夠有效在海量的內(nèi)容中快速、精準(zhǔn)地定位到自己所需的信息。目前我國(guó)國(guó)內(nèi)的主流搜索引擎主要有百度、搜狗、中搜等等,而本文主要結(jié)合JAVA技術(shù)對(duì)搜索引擎的設(shè)計(jì)和實(shí)現(xiàn)進(jìn)行了分析。
1.1 搜索引擎的組成
網(wǎng)絡(luò)蜘蛛、索引器以及檢索器是搜索引擎三個(gè)主要的組成部分,其中網(wǎng)絡(luò)蜘蛛的主要作用是從指定的IP地址或者網(wǎng)頁(yè)出發(fā)遍歷互聯(lián)網(wǎng)以收集網(wǎng)頁(yè),同時(shí)基于任何網(wǎng)頁(yè)中的所有URL爬到其他的網(wǎng)頁(yè)并對(duì)這一過(guò)程進(jìn)行重復(fù),將所有爬過(guò)的網(wǎng)頁(yè)收集存儲(chǔ)到頁(yè)面存儲(chǔ)庫(kù)中;索引器主要是對(duì)所有收集回來(lái)的網(wǎng)頁(yè)進(jìn)行再次分析,將網(wǎng)頁(yè)中的編碼類型、內(nèi)容、關(guān)鍵詞等各種信息進(jìn)行提取,然后基于一定的額相關(guān)度算法進(jìn)行大量復(fù)雜的計(jì)算,得到每一個(gè)頁(yè)面內(nèi)容的相關(guān)度,最后建立網(wǎng)頁(yè)索引數(shù)據(jù)庫(kù);檢索器主要面對(duì)用戶,當(dāng)用戶向查詢服務(wù)器輸入關(guān)鍵詞進(jìn)行檢索后,由其從網(wǎng)頁(yè)索引數(shù)據(jù)庫(kù)中找到符合該關(guān)鍵詞的所有相關(guān)網(wǎng)頁(yè)。
1.2 搜索引擎的工作流程
搜索引擎典型的工作流程主要如圖1所示。
圖1 搜索引擎的工作流程圖
2.1 網(wǎng)頁(yè)抓取技術(shù)
網(wǎng)頁(yè)抓取技術(shù)是搜索引擎應(yīng)該進(jìn)行的第一步工作,通過(guò)該技術(shù)能夠在WEB上對(duì)網(wǎng)頁(yè)信息進(jìn)行收集并將其存入到頁(yè)面存儲(chǔ)庫(kù)中。目前很多搜索引擎應(yīng)用的主要是一個(gè)叫做網(wǎng)絡(luò)蜘蛛的機(jī)器人程序來(lái)完成該項(xiàng)工作。不過(guò),互聯(lián)網(wǎng)信息非常大,想要全部抓取也是不可能的,這時(shí)候就需要采取有效的網(wǎng)頁(yè)抓取方法。常用的網(wǎng)頁(yè)抓取策略主要有深度優(yōu)先與廣度優(yōu)先兩種,在搜索引擎的設(shè)計(jì)中應(yīng)該結(jié)合搜索引擎的實(shí)際情況進(jìn)行選取。此外,還應(yīng)該對(duì)抓取周期與抓取內(nèi)容進(jìn)行詳細(xì)的分析。
2.2 索引建立和搜索技術(shù)
當(dāng)搜索引擎將網(wǎng)頁(yè)抓取收集回來(lái)并放入到頁(yè)面存儲(chǔ)庫(kù)之后,便需要進(jìn)行索引庫(kù)的建立,從而為搜索器的工作提供基礎(chǔ)。而在索引的建立中:①便是要進(jìn)行網(wǎng)頁(yè)內(nèi)容的分析,而在網(wǎng)頁(yè)內(nèi)容的分析中,詞的識(shí)別是關(guān)鍵所在,這是因?yàn)樗阉饕娑际且栽~為基本搜索單位的,而本文采用了中文分詞技術(shù);②為了加快信息的檢索速度,搜索引擎還要根據(jù)頁(yè)面存儲(chǔ)庫(kù)來(lái)建立相應(yīng)的索引,在建立索引時(shí)需要對(duì)網(wǎng)頁(yè)結(jié)構(gòu)、無(wú)用詞匯的過(guò)濾以及圖像標(biāo)記的處理等內(nèi)容進(jìn)行考慮。同時(shí),搜索技術(shù)的主要目的是對(duì)用戶的搜索請(qǐng)求進(jìn)行響應(yīng)和滿足,一般情況下,用戶輸入關(guān)鍵詞后,服務(wù)器對(duì)應(yīng)關(guān)鍵詞詞典,將搜索關(guān)鍵詞進(jìn)行轉(zhuǎn)化、掃描和匹配,最后提取出滿足條件的網(wǎng)頁(yè),然后計(jì)算網(wǎng)頁(yè)和關(guān)鍵詞的相關(guān)度,根據(jù)相關(guān)度的數(shù)值返回前N篇的結(jié)果給用戶。
本文主要基于JAVA技術(shù)對(duì)搜索引擎的網(wǎng)絡(luò)蜘蛛、索引器以及搜索器等三個(gè)關(guān)鍵的部分進(jìn)行了實(shí)現(xiàn),從而有效完成了搜索引擎的基本功能。
3.1 JAVA技術(shù)分析
在設(shè)計(jì)與實(shí)現(xiàn)搜索引擎之前,應(yīng)該安裝相關(guān)的軟件,本文所用到的軟件主要有JAVA程序開發(fā)包(java 2 platform standard edition 6.0)、JAVA類庫(kù)(Lucene3.6.1)以及Servlet/JSP容器(Tomcat6.0)三個(gè)。其中Lucene 3.6.1主要用于實(shí)現(xiàn)索引和搜索。在搜索引擎的實(shí)現(xiàn)中,主要使用了JAVA如下幾種技術(shù):
(1)為了實(shí)現(xiàn)網(wǎng)絡(luò)蜘蛛的抓取網(wǎng)頁(yè)功能,需要實(shí)現(xiàn)與WEB服務(wù)器的通信功能以進(jìn)行網(wǎng)頁(yè)的下載,而JAVA提供了許多支持Internet的類。而這些類主要包括套接字類與和URL地址一起工作的URL類;
(2)為了避免在網(wǎng)頁(yè)抓取中出現(xiàn)的漢字亂碼現(xiàn)象,還用到了JAVA技術(shù)的漢字處理技術(shù);
(3)為了大幅度提升網(wǎng)頁(yè)抓取、索引建立以及搜索等的工作效率,需要用到JAVA技術(shù)的多線程機(jī)制;
(4)有時(shí)候網(wǎng)絡(luò)蜘蛛需要訪問(wèn)大量的網(wǎng)站,就需要有一種有效的方式來(lái)存儲(chǔ)驅(qū)動(dòng)網(wǎng)絡(luò)蜘蛛的站點(diǎn)隊(duì)列,這個(gè)列表往往是比較龐大的,而此時(shí)便需要采用JAVA技術(shù)的JDBC提交SQL命令來(lái)操作數(shù)據(jù)庫(kù)。
3.2 搜索引擎的實(shí)現(xiàn)
在網(wǎng)絡(luò)蜘蛛的實(shí)現(xiàn)中,可以利用JAVA對(duì)HTTP協(xié)議的內(nèi)建支持,通過(guò)相關(guān)的接口和類來(lái)進(jìn)行實(shí)現(xiàn)。用到的JAVA接口和類主要有Spider類、ISpiderReportable接口、IWorkloadStoralbe 接口、SpiderWorker類以及 SpiderDone類等。然后利用Lucene的高性能和易于擴(kuò)展的IR類庫(kù)來(lái)實(shí)現(xiàn)索引和搜索功能。由于Lucene完全是由JAVA來(lái)實(shí)現(xiàn)的,具有非常良好的跨平臺(tái)性。
通過(guò)本文所述的技術(shù)實(shí)現(xiàn)的搜索引擎達(dá)到了預(yù)期的目標(biāo),如圖2展示了本文所實(shí)現(xiàn)的搜索引擎網(wǎng)頁(yè)抓取程序的運(yùn)行截圖。由于在搜索引擎中應(yīng)用了多線程機(jī)制,具有很高的工作效率,不過(guò)在抓取動(dòng)態(tài)頁(yè)面方面還有著一定的限制,都需要在未來(lái)進(jìn)一步完善。
圖2 網(wǎng)頁(yè)抓取程序的運(yùn)行截圖
綜上所述,本文應(yīng)用JAVA技術(shù)順利地實(shí)現(xiàn)了搜索引擎的基本功能,在工作效率等方面都達(dá)到了預(yù)期的效果,不過(guò)由于在動(dòng)態(tài)網(wǎng)頁(yè)的抓取方面還受到一定的限制,本文所述的方法還有一定的進(jìn)步空間。
[1]雷斌.基于JAVA技術(shù)的智能化搜索引擎的研究與設(shè)計(jì)[D].哈爾濱工程大學(xué),2010.
[2]褚麗莉.基于JAVA的搜索引擎技術(shù)在Web信息挖掘中的應(yīng)用[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,05:1006~1008.
[3]房志峰,趙恒永.基于JAVA技術(shù)的搜索引擎文件服務(wù)系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2006,06:144~147.
[4]王暢.基于JAVA技術(shù)的搜索引擎基本組成和數(shù)據(jù)結(jié)構(gòu)探究[J].今日科苑,2011,06:109~110.
[5]羅興榮.探討JAVA搜索引擎Nutch中文搜索技術(shù)[J].數(shù)字技術(shù)與應(yīng)用,2013,10:181.
TP391.3
A
1004-7344(2016)08-0286-02
2016-2-22