一種校內(nèi)網(wǎng)資源搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)
隨著高校校園網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)作為信息的傳播平臺(tái)正在高速向前邁進(jìn)。學(xué)校校園網(wǎng)中各種資訊、軟件、多媒體資源越來(lái)越豐富并且呈現(xiàn)出爆發(fā)式的增長(zhǎng)。以本校為例,目前軟件資源容量為300 G、音樂(lè)資源容量為4 T、電影資源容量為9 T、學(xué)習(xí)資源容量近達(dá)1 T等,這些信息資源幫助人們更好地完成工作與學(xué)習(xí)、豐富業(yè)余生活、提供更加快速方便的下載方式。但是這是數(shù)字資源分布在不同服務(wù)器與存儲(chǔ)中,如何更加有效地利用這些海量的校內(nèi)網(wǎng)資源成為信息管理者深思的問(wèn)題。人們?cè)诨ヂ?lián)網(wǎng)上查找信息都會(huì)用到搜索引擎來(lái)搜索需要的信息,通過(guò)搜索引擎的模糊匹配機(jī)制,能很容易找到想要得到的信息。對(duì)于學(xué)校信息中心信息管理人員來(lái)說(shuō),如果能在校內(nèi)網(wǎng)中引入一套搜索引擎機(jī)制來(lái)解決這個(gè)問(wèn)題,就能使廣大師生能快捷便利地使用這些信息而且減少重復(fù)從外網(wǎng)下載、降低校內(nèi)網(wǎng)出口帶寬的壓力、充分提高校園網(wǎng)內(nèi)部資源的利用率的問(wèn)題。
1 需求分析
搜索引擎原理,通常指的是收集了因特網(wǎng)上幾千萬(wàn)到幾十億個(gè)網(wǎng)頁(yè)并對(duì)網(wǎng)頁(yè)中的每一個(gè)詞(即關(guān)鍵詞)進(jìn)行索引,建立索引數(shù)據(jù)庫(kù)的全文搜索引擎。當(dāng)用戶查找某個(gè)關(guān)鍵詞的時(shí)候,所有在頁(yè)面內(nèi)容中包含了該關(guān)鍵詞的網(wǎng)頁(yè)都將作為搜索結(jié)果被搜出來(lái)。在經(jīng)過(guò)復(fù)雜的算法進(jìn)行排序后,這些結(jié)果將按照與搜索關(guān)鍵詞的相關(guān)度高低,依次排列。
本系統(tǒng)主要目標(biāo)是仿照搜索引擎的原理實(shí)現(xiàn)對(duì)校內(nèi)網(wǎng)信息資源的全面搜索。這些資源可能是不同類型,可能分別存在不同服務(wù)器中且服務(wù)器的類型也不近相同,如有FTP服務(wù)器、HTTP服務(wù)器等。對(duì)于這些不同的環(huán)境要求,要求本系統(tǒng)要完成以下需求:
(1)索引建立要滿足不同的服務(wù)器類型,如http、ftp等。
(2)索引建立時(shí)要區(qū)分文件的類型。
(3)定時(shí)(手工)刪除本機(jī)器的索引,并重新建立指定目錄的文件索引。
(4)搜索能支持模糊查詢。
(5)提供用戶搜索、下載功能,記錄關(guān)鍵字頻率及文件訪問(wèn)次數(shù)。
對(duì)于以上需求,本系統(tǒng)采用多agent模式,對(duì)不同服務(wù)器,分別安裝索引建立模式(agent),再通過(guò)對(duì)參數(shù)的配置實(shí)現(xiàn)對(duì)不同服務(wù)器中資源的索引建立。
2 系統(tǒng)分析
2.1 系統(tǒng)結(jié)構(gòu)
本搜索引擎結(jié)構(gòu)如圖1所示,軟件的設(shè)計(jì)與開(kāi)發(fā)主要為兩個(gè)部分:(1)索引的建立。主要負(fù)責(zé)在后臺(tái)數(shù)據(jù)的建立,采用客戶端與服務(wù)器結(jié)構(gòu)(C/S結(jié)構(gòu));(2)Web的查詢。主要負(fù)責(zé)向用戶提供友好界面的查詢服務(wù),采用瀏覽器與服務(wù)器結(jié)構(gòu)(B/S結(jié)構(gòu))。通過(guò)開(kāi)發(fā)索引建立程序,將文件存放的服務(wù)器(FTP、HTTP等)進(jìn)行搜索,分析文件的名稱、大小、類別、位置等并將這些文件信息合并服務(wù)器IP、訪問(wèn)的前綴等建立對(duì)應(yīng)的索引添加到數(shù)據(jù)庫(kù)服務(wù)器中。
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
為了方便數(shù)據(jù)庫(kù)中文件信息的處理,數(shù)據(jù)庫(kù)設(shè)計(jì)了兩個(gè)基本數(shù)據(jù)表,一個(gè)存放索引建立模塊,將文件的索引放入表1中;另一個(gè)表主要存放用戶搜索的相關(guān)信息,如表2所示。如果搜索數(shù)據(jù)非常龐大時(shí),要對(duì)基本數(shù)據(jù)表按不同的規(guī)則進(jìn)行分割,成立多個(gè)子表(可以按照服務(wù)器類型、文件類型或者服務(wù)器所屬網(wǎng)絡(luò)等分類),實(shí)現(xiàn)對(duì)資源的高效率搜索。
2.3系統(tǒng)設(shè)計(jì)
索引建立模塊(agent)的界面上參數(shù)主要包含服務(wù)器IP地址、服務(wù)器前綴、選擇搜索的路徑、設(shè)置定時(shí)時(shí)間等。服務(wù)器相關(guān)的文件是以海量規(guī)模存儲(chǔ)的,為了提高索引建立的效率,系統(tǒng)采用后臺(tái)的存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作。
索引建立模塊是整個(gè)系統(tǒng)的核心,通過(guò)遞歸算法,將服務(wù)器中指定文件夾中所有文件(或者指定類型文件)的信息依次提取,將文件物理地址轉(zhuǎn)換為邏輯地址并形成對(duì)應(yīng)關(guān)系,按照數(shù)據(jù)庫(kù)表結(jié)構(gòu)預(yù)先設(shè)定的規(guī)則放入數(shù)據(jù)庫(kù)對(duì)應(yīng)表中,實(shí)現(xiàn)對(duì)文件服務(wù)器中文件索引的建立。搜索的用戶程序采用B/S結(jié)構(gòu),用戶通過(guò)瀏覽器搜索關(guān)鍵字實(shí)現(xiàn)對(duì)資源的查詢。搜索的關(guān)鍵字采用對(duì)所在分類文件夾和文件名中模糊匹配,將搜索的結(jié)果以類別、文件名、文件類型、文件大小等信息來(lái)展現(xiàn)。
2.4主要核心代碼
(1)搜索文件代碼
if(FindFirst(PathName+"*.*", faAnyFile, sr)== 0)
{
do
{
if((sr.Attr&faDirectory)&&sr.Name!="."
&&sr.Name!="..")
//判斷是否是目錄,并排除目錄“.”和“..”
{
//mem->Lines->Add("目錄:"+sr.Name); //調(diào)用函數(shù)本身,進(jìn)入子目錄
BrowDir(PathName+sr.Name+"\",kind);
}
}while (FindNext(sr) == 0);
FindClose(sr);
}
(2)調(diào)用存取過(guò)程代碼
ADOStoredProc1->ProcedureName="sp_insert";
ADOStoredProc1->Parameters->ParamByName("@ipstr")->Value=Trim(Form1->edip->Text);
ADOStoredProc1->Parameters->ParamByName("@frontstr")->Value= Trim(edfront->Text);ADOStoredProc1->Parameters->ParamByName("@folderstr")->Value=PathName.SubString(edpath->Text.Length()+2,PathName.Length()-edpath->Text.Length());
ADOStoredProc1->Parameters->ParamByName("@filenamestr")->Value=sr.Name;
ADOStoredProc1->Parameters->ParamByName("@filetypestr")->Value= ExtractFileExt(PathName+sr.Name);
ADOStoredProc1->Parameters->ParamByName("@filesizestr")->Value= sizestr;
ADOStoredProc1->Prepared;
ADOStoredProc1->ExecProc();
內(nèi)網(wǎng)資源搜索引擎對(duì)于類似校園網(wǎng)內(nèi)部資源的整合有很重要的作用,它的重要性表現(xiàn)在能將校園網(wǎng)的各種資源以統(tǒng)一的搜索引擎的方式提供給用戶,方便用戶的查找與使用,極大地提高了這些資源的利用率。本文介紹的校內(nèi)網(wǎng)搜索引擎已經(jīng)在我校產(chǎn)生的明顯的效果,隨著推廣的深入,廣大師生越來(lái)越多地都在使用它來(lái)尋找自己所需要的資源,極大提高了工作效率并減輕了校園網(wǎng)出口帶寬的壓力。
參考文獻(xiàn)
[1] 郝金隆,王成良.原創(chuàng)優(yōu)先的搜索引擎排序算法[J].計(jì)算機(jī)工程,2008,34(18):85-86.
[2] 任勇旗,唐毅.以客戶為中心的搜索引擎優(yōu)化研究[J].圖書(shū)館學(xué)研究,2009(1):44-45.
[3] 吳斷,施水才.一種結(jié)合超鏈接分析的搜索引引擎排序[J].計(jì)算機(jī)工程,2004,30(15):143-145