摘要: 為了設(shè)計(jì)與開發(fā)校園網(wǎng)智能搜索引擎,研究和分析搜索引擎的工作原理、Lucene的運(yùn)行機(jī)制以及智能搜索引擎功能需求。結(jié)合本校的校園網(wǎng)建設(shè),分別從爬蟲系統(tǒng)、索引系統(tǒng)、引擎管理平臺、檢索系統(tǒng)4個(gè)子系統(tǒng)出發(fā)實(shí)現(xiàn)了一套基于Lucene的校園網(wǎng)智能搜索引擎,搜索引擎在搜索功能、信息監(jiān)管、系統(tǒng)安全、智能交互方面都有所提升。搜索引擎可為校內(nèi)用戶提供決策性的搜索幫助,且搜索結(jié)果的期望值較高。
關(guān)鍵字: 網(wǎng)絡(luò)爬蟲; Lucene; 校園網(wǎng); 智能搜索引擎; 索引系統(tǒng)
中圖分類號: TN964?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2013)06?0083?04
隨著因特網(wǎng)的迅猛發(fā)展、Web信息量的爆炸性增長,人們被龐大的、多樣性的信息所圍繞,用戶要在信息的海洋中查找自己需要的信息,猶如大海撈針一般,有時(shí)會無功而返,正因如此,搜索引擎技術(shù)應(yīng)運(yùn)而生,它有效地解決了信息數(shù)量多與用戶查找信息困難之間的矛盾,發(fā)展到了今天,商用搜索引擎已經(jīng)相當(dāng)成熟,搜索方式越來越趨向于人性化、智能化。據(jù)調(diào)查,全國現(xiàn)有30%左右的高校采用百度或Google嵌入式引擎作為校園內(nèi)部搜索引擎,但他們在使用中發(fā)現(xiàn),商用搜索引擎很難實(shí)現(xiàn)一個(gè)域范圍內(nèi)的全面而精準(zhǔn)的搜索。因此,高校有必要根據(jù)本校的校園網(wǎng)環(huán)境特色,自行設(shè)計(jì)和實(shí)現(xiàn)一套智能、高效的搜索引擎。
本文在研究分析搜索引擎的工作原理和Lucene的運(yùn)行機(jī)制的基礎(chǔ)上,建立了一套基于Lucene的校園網(wǎng)站智能全文搜索系統(tǒng),為校內(nèi)外用戶提供針對學(xué)校各類網(wǎng)站的全文搜索服務(wù),使用戶能夠快速、方便、準(zhǔn)確、全面地查找到所需信息,提高學(xué)校網(wǎng)站利用率。
1 搜索引擎及Lucene概述
搜索引擎使用網(wǎng)絡(luò)爬蟲尋找網(wǎng)絡(luò)內(nèi)容,網(wǎng)絡(luò)上的HTML文檔使用超鏈接鏈接起來,就像織成了一張網(wǎng),網(wǎng)絡(luò)爬蟲也叫網(wǎng)絡(luò)蜘蛛,順著這張網(wǎng)爬行,每到一個(gè)網(wǎng)頁就用抓取程序?qū)⑦@個(gè)網(wǎng)頁抓下來,將內(nèi)容抽取出來,同時(shí)抽取超鏈接,作為進(jìn)一步爬行的線索[1]。網(wǎng)絡(luò)爬蟲總是要從某個(gè)起點(diǎn)開始爬,這個(gè)起點(diǎn)被稱作種子,可以告訴它,也可以到一些網(wǎng)址列表網(wǎng)站上獲取,隨著網(wǎng)絡(luò)爬蟲對數(shù)據(jù)的大量收集,產(chǎn)生一個(gè)問題,怎么能從收集的千千萬萬的信息中快速、精確地找到自己需要的信息,這時(shí)就需要建立針對文本的索引,將文本內(nèi)容轉(zhuǎn)換或能夠進(jìn)行快速搜索的格式,從而消除按順序掃描的慢速搜索,簡單地理解為一種用來快速查找單詞的工具,當(dāng)用戶想要查詢自己所需的信息時(shí),檢索器會接受用戶的輸入,并建立查詢,接著進(jìn)行查詢解析,在文本庫中進(jìn)行快速檢索,進(jìn)行相關(guān)性排序,最終將查詢結(jié)果提供給用戶查看。通過上述分析,一個(gè)基本的搜索引擎系統(tǒng)應(yīng)包括3部分內(nèi)容:搜索器、索引器、檢索器[2]。
Lucene是Apache軟件基金會jakarta項(xiàng)目組的一個(gè)子項(xiàng)目,是一個(gè)開放源代碼的全文檢索引擎工具包,它本身不是一個(gè)完整的搜索程序,而只是搜索程序的核心和搜索模塊而已,可以方便的嵌入到各種應(yīng)用中實(shí)現(xiàn)針對應(yīng)用的全文索引/檢索功能[3]。Lucene具有如下突出優(yōu)點(diǎn)[4]:
(1)索引文件格式獨(dú)立于應(yīng)用平臺。Lucene定義了一套以8位字節(jié)為基礎(chǔ)的索引文件格式,使得兼容系統(tǒng)或者不同平臺的應(yīng)用能夠共享建立的索引文件。
(2)在傳統(tǒng)全文檢索引擎的倒排索引的基礎(chǔ)上,實(shí)現(xiàn)了分塊索引,能夠針對新的文件建立小文件索引,提升索引速度。然后通過與原有索引的合并,達(dá)到優(yōu)化的目的。
(3)優(yōu)秀的面向?qū)ο蟮南到y(tǒng)架構(gòu),使得對于Lucene擴(kuò)展的學(xué)習(xí)難度降低,方便擴(kuò)充新功能。
(4)設(shè)計(jì)了獨(dú)立于語言和文件格式的文本分析接口,索引器通過接受Token流完成索引文件的創(chuàng)立,用戶擴(kuò)展新的語言和文件格式,只需要實(shí)現(xiàn)文本分析的接口。
(5)已經(jīng)默認(rèn)實(shí)現(xiàn)了一套強(qiáng)大的查詢引擎,用戶無需自己編寫代碼即使系統(tǒng)可獲得強(qiáng)大的查詢能力,Lucene的查詢實(shí)現(xiàn)中默認(rèn)實(shí)現(xiàn)了布爾操作、模糊查詢、分組查詢等。
Lucene基本上向用戶提供索引、搜索、管理3大組件。索引組件分為4個(gè)部分,首先,使用爬蟲來搜集和界定需要索引的內(nèi)容;然后,將獲得的內(nèi)容轉(zhuǎn)換成文檔,文檔通常包含標(biāo)題、正文、摘要、作者、鏈接等域;隨后,進(jìn)行文檔分析,將文本分割成一系列詞匯單元,俗稱切詞;最后文檔被加入索引列表。搜索組件包括3部分,首先,建立查詢請求,用戶提交的搜索請求會轉(zhuǎn)換成為搜索引擎特定的查詢的對象格式;其次,查詢檢索索引并返回與關(guān)鍵詞匹配的文檔,引擎會按照某種特定的機(jī)制來排序;最后,便是展現(xiàn)查詢結(jié)果,結(jié)果會以直觀的、經(jīng)濟(jì)的的方式為用戶展現(xiàn)結(jié)果。Lucene以其突出的優(yōu)勢及十分全面的索引、查詢等組件,成為開發(fā)校園網(wǎng)搜索引擎的必備框架。這樣各大高校就可以通過擴(kuò)展程序,對Lucene進(jìn)行二次開發(fā),構(gòu)建出適合本校的校園網(wǎng)搜素引擎。
2 智能搜索引擎功能分析
本研究實(shí)現(xiàn)了一套個(gè)性、智能、管理方便、安全性高的校園網(wǎng)站全文檢索系統(tǒng),具體說來滿足以下3方面要求。
2.1 搜索功能方面
(1)能夠?qū)χ付ǖ木W(wǎng)站進(jìn)行搜索,并對每個(gè)網(wǎng)站單獨(dú)確定不同的搜索規(guī)則,包括搜索深度、搜索范圍、更新周期等,支持網(wǎng)頁定向采集,對內(nèi)容更新快的網(wǎng)站或網(wǎng)頁,能夠?qū)崟r(shí)更新索引,實(shí)現(xiàn)即時(shí)搜索。
(2)能夠?qū)o態(tài)網(wǎng)頁和各種技術(shù)的動(dòng)態(tài)網(wǎng)頁進(jìn)行采集,自動(dòng)識別多語言網(wǎng)頁編碼,能夠搜索如下類型資源:網(wǎng)頁正文;網(wǎng)頁正文中嵌入的圖片、音樂、視頻等資源;網(wǎng)頁正文中鏈接的非結(jié)構(gòu)化數(shù)據(jù)的內(nèi)容,包括txt,doc(docx),xls(xlsx),ppt(pptx),rtf,pdf等格式的文件。
(3)具備較高的準(zhǔn)確性、全面性與相關(guān)性,提供靈活的查詢方式,包括單字+詞的混合查詢、多條件的復(fù)合查詢、指定范圍(網(wǎng)站)查詢、組合查詢、短語查詢、通配符和前綴查詢。
(4)搜索結(jié)果顯示和排序清晰、信息量大,此外,引擎能夠根據(jù)用戶搜索情況,對搜索結(jié)果進(jìn)行優(yōu)化重排,例如將近期用戶搜索次數(shù)多的信息排在結(jié)果最前等。
(5)訪問控制粒度上,校內(nèi)外用戶檢索結(jié)果應(yīng)具有差異性,不同角色檢索權(quán)限不同,例如:如果某些網(wǎng)站不允許學(xué)生訪問,學(xué)生將不具備檢索權(quán)限。
(6)具有智能交互功能,此功能針對學(xué)校內(nèi)部人員,引擎可記錄下使用者的歷史查詢和點(diǎn)擊記錄來不斷修正和完善用戶的興趣詞,來為用戶提供決策性的搜索幫助。
2.2 信息監(jiān)管方面
(1)能夠?qū)λ阉鹘Y(jié)果準(zhǔn)確的實(shí)現(xiàn)訪問控制,不能將僅供校內(nèi)用戶訪問的信息以任何形式出現(xiàn)在校外用戶的搜索結(jié)果中,也不能提供任何方式的原文鏈接。確定訪問控制的方式包括:根據(jù)來源網(wǎng)站提供的信息訪問控制規(guī)則;根據(jù)每個(gè)網(wǎng)站單獨(dú)確定規(guī)則;根據(jù)預(yù)先設(shè)定的過濾規(guī)則。
(2)能夠提供有效的信息監(jiān)管手段,基于敏感詞、來源等方式對搜索結(jié)果進(jìn)行屏蔽,具備搜索趨勢分析等功能。
2.3 系統(tǒng)安全方面
(1)系統(tǒng)必須具備完善的防護(hù)措施,不存在明顯的安全漏洞,能夠防范SQL注入、跨站腳本等Web攻擊,不會因?yàn)閃eb攻擊導(dǎo)致信息泄露。
(2)系統(tǒng)能夠在建立索引時(shí)進(jìn)行病毒、木馬掃描,并進(jìn)行標(biāo)記,在搜索結(jié)果中進(jìn)行提示或屏蔽,防止存在安全問題的網(wǎng)站通過搜索系統(tǒng)擴(kuò)大影響范圍。
3 智能搜索引擎實(shí)現(xiàn)
本次設(shè)計(jì)和實(shí)現(xiàn)的整個(gè)搜索引擎系統(tǒng)分為4個(gè)子系統(tǒng),分別為爬蟲系統(tǒng)、索引系統(tǒng)、智能搜索引擎管理平臺、檢索系統(tǒng)。
3.1 爬蟲系統(tǒng)
爬蟲系統(tǒng)為整個(gè)搜索引擎的核心之一,如圖1所示,爬蟲系統(tǒng)每天定時(shí)從隊(duì)列中獲取爬蟲的URL,同時(shí)產(chǎn)生多個(gè)線程爬取,并將爬取到的數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中。對于網(wǎng)頁內(nèi)容的提取,一直是搜索引擎的重要的技術(shù)之一。Lucene本身并不能提供任何功能來完成內(nèi)容獲取,因此,選用另一個(gè)由Java開發(fā)的、開源的Web網(wǎng)絡(luò)爬蟲Heritrix[5],它也具有很強(qiáng)的擴(kuò)展性,開發(fā)者可以擴(kuò)展它的各個(gè)組件,來實(shí)現(xiàn)自己的內(nèi)容爬取。在進(jìn)行爬取前,需要對爬取的內(nèi)容進(jìn)行詳細(xì)的分析,以確定種子,即爬取的起始頁,在選擇好網(wǎng)站得到爬取清單后,則可以以WebUI方式啟動(dòng)Heritrix進(jìn)行任務(wù)爬取,接著將Heritrix爬取的內(nèi)容生成鏡像文件,最后將利用HTMLParser工具來對鏡像文件進(jìn)行結(jié)構(gòu)化信息解析、整理,為后續(xù)的索引打下基礎(chǔ)。
一個(gè)完整的搜索引擎系統(tǒng)需要很多需要配置的控制功能,Lucene管理界面向開發(fā)者提供了大量配置選項(xiàng),如調(diào)節(jié)緩沖區(qū)的使用量、提交更改的頻率、優(yōu)化和清楚某索引的時(shí)間點(diǎn)等[7]。
對于本系統(tǒng),在爬蟲管理中加入了2種比較新穎的功能,敏感詞庫管理和木馬監(jiān)控,敏感詞庫對查詢用戶起到了屏蔽敏感詞查詢的作用,對于管理員,系統(tǒng)會自動(dòng)列出存在敏感詞的系統(tǒng)地址,方便管理員對各個(gè)系統(tǒng)進(jìn)行監(jiān)控。木馬監(jiān)控可方便讓管理員注意到哪些網(wǎng)站存在病毒、木馬,并采取相應(yīng)的防范措施來預(yù)防。
3.4 檢索系統(tǒng)
測試結(jié)果表明,本搜索引擎比通用搜索引擎在查詢時(shí)間和查準(zhǔn)率上均有提高,更加適合本校園網(wǎng)內(nèi)使用。
5 結(jié) 語
Lucene是一款優(yōu)秀的開源全文搜索技術(shù)框架,具有良好的擴(kuò)展性,運(yùn)用它所實(shí)現(xiàn)的校園網(wǎng)智能搜索引擎系統(tǒng)可以穩(wěn)定運(yùn)行,對推動(dòng)校園網(wǎng)Web應(yīng)用以及基于搜索引擎技術(shù)的教學(xué)、科研等都有一定的現(xiàn)實(shí)意義。同時(shí)系統(tǒng)也存在一些有待改進(jìn)的地方,如改善搜索算法、提高搜索智能化等都是經(jīng)后進(jìn)一步研究的內(nèi)容。
參考文獻(xiàn)
[1] 佚名.搜索引擎的基本原理 [EB/OL]. [2010?11?24]. http://blog.csdn.net/zhangxinrun/article/details/6032265.
[2] 蔡建超.基于lucene.net的校園網(wǎng)搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(11):73?75.
[3] 管建和,甘劍峰.基于Lucene全文檢索引擎的應(yīng)用研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(2):489?491.
[4] Anon. Lucene的突出優(yōu)勢[EB/OL]. [2012?06?26]. http:// baike.baidu.com/view/371811.htm.
[5] 朱雪蓮.基于Lucene的專業(yè)搜索引擎的研究與應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2010(7):116?119.
[6] 田宇.基于XML的WEB信息抽取系統(tǒng)研究與實(shí)現(xiàn)[D].呼和浩特:內(nèi)蒙古大學(xué),2010.
[7] MCCANDLESS Michael, ERIK Hatcher, GOSPODNETIC Otis. Lucene實(shí)戰(zhàn)[M].牛長流,肖宇,譯.2版.北京:人民郵電出版社,2011.
[8] 馬家宇,陽小華.基于J2EE架構(gòu)的智能元搜索引擎系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(8):68?69,99.