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