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