明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用ASP做全文檢索

[摘要]摘要:通過詞句查找相關(guān)的全文是瀏覽器端常用的方法,ASP類似于CGI,也可以進(jìn)行簡(jiǎn)單的文本方式全文檢索 在Internet/Intranet上對(duì)某類信息做詳細(xì)瀏覽和全文檢索也是常碰到的情況。ASP是...

摘要:通過詞句查找相關(guān)的全文是瀏覽器端常用的方法,ASP類似于CGI,也可以進(jìn)行簡(jiǎn)單的文本方式全文檢索 

在Internet/Intranet上對(duì)某類信息做詳細(xì)瀏覽和全文檢索也是常碰到的情況。ASP是微軟公司開發(fā)的用于制作動(dòng)態(tài)Web頁(yè)的一種服務(wù)器端腳本型式(或曰編寫環(huán)境)。它使用VBScript或JavaScript等簡(jiǎn)易的腳本語(yǔ)言,集成在HTML碼中,在服務(wù)器端響應(yīng)瀏覽器端請(qǐng)求而執(zhí)行數(shù)據(jù)訪問和過程(或?qū)ο螅┱{(diào)用并產(chǎn)生瀏覽器端執(zhí)行的腳本語(yǔ)言。本文介紹用ASP編寫全文檢索代碼的方法。 

方法介紹: 
確定被檢索的文件。將它們保存在同一文件夾中。文件的類型可以是任何文本類型(包括.htm網(wǎng)頁(yè)文件類型) 
建立被檢索文件的信息庫(kù)。其中主要包含文件名,文件標(biāo)題等。 
用ADO方式訪問數(shù)據(jù)庫(kù)。建立記錄集對(duì)象。 
逐個(gè)打開記錄集中當(dāng)前記錄所指向的文件。用查找的字串對(duì)文件的全文本進(jìn)行匹配比較。 
將符合條件的文件標(biāo)題輸出到客戶端Web頁(yè),并加入指向該文件的超鏈,以供用戶選擇瀏覽。 
技術(shù)要點(diǎn): 
數(shù)據(jù)源。要在創(chuàng)建腳本之前,利用Windows95控制面板中的ODBC指定要訪問的數(shù)據(jù)庫(kù)及其驅(qū)動(dòng)程序,以數(shù)據(jù)源名(DSN)標(biāo)識(shí)之。 
匹配字串的長(zhǎng)度。由于瀏覽器端的數(shù)據(jù)經(jīng)過編碼傳到服務(wù)器端,ASP通過其內(nèi)建對(duì)象Request取得的數(shù)據(jù)也并非完全是用戶輸入的有用信息 
,所以要加以處理。可以在輸入字串后附加一標(biāo)志字符(如#或chr(7))。本文則采取另一種方法,即計(jì)算有效信息的長(zhǎng)度。從而截取所需的 
字串。 
創(chuàng)建腳本的文件系統(tǒng)對(duì)象Scripting.FileSystemObject,從而打開文本流以讀入。 
特點(diǎn): 
直接對(duì).htm文件進(jìn)行全文檢索,省卻許多轉(zhuǎn)換過程。.htm文件又用于網(wǎng)頁(yè)的顯示,一舉兩得。 
應(yīng)用ASP,簡(jiǎn)單明了,易于實(shí)現(xiàn)。 
本例ASP代碼: 
〈%@LANGUAGE="VBSCRIPT"%〉 
〈html〉 
〈head〉 
〈metaNAME="GENERATOR"Content="MicrosoftFrontPage3.0"〉 
〈metaHTTP-EQUIV="Content-Type"content="text/html;charset=gb_2312-80"〉 
〈title〉DocumentTitle〈/title〉 
〈metaname="MicrosoftBorder"content="tl,default"〉〈/head〉 
〈bodyBACKGROUND="/ie/images/watermrk.gif"BGPROPERTIES="FIXED"BGCOLOR="#00FFFF"〉 
〈% 
mousepointer=13 
SetConn1=Server.CreateObject("ADODB.Connection") 
conn1.open"DSN=cznj" 
Setrcst1=conn1.execute("SELECT*FROMpages_catalogue") 
sch_str=request.form("text1") 
doubbytes=len(sch_str)\2 
sch_str=left(sch_str,doubbytes) 
Response.Write"〈strong〉〈CENTER〉〈H2〉查找結(jié)果〈/H2〉〈HR〉〈Br〉〈/strong〉" 
Dimresult 
result=false 
Response.Write"〈UL〉" 
dowhilenotrcst1.eof 
tit=rcst1.fields("file_title") 
fn=rcst1.fields("file_name") 
file_name=Server.MapPath("/")&"\njweb\private\"&fn 
to_find=text_match(file_name,sch_str) 
ifto_findthen 
url="private/"&fn 
Response.Write"〈LEFT〉〈LI〉〈H4〉〈AHREF="&url&"〉"&tit 
endif 
rcst1.movenext 
result=resultorto_find 
loop 
Response.Write"〈/UL〉" 
ifnotresultthen 
Response.Write"〈H3〉〈I〉未找到!〈/I〉〈/H3〉" 
endif 
mousepointer=0 
%〉 
〈scriptRUNAT="Server"LANGUAGE="VBScript"〉 
functiontext_match(filename,search_string) 
dimretstring 
dimfind_pos 
Dimfso,a 
dimdone 
text_match=false 
Setfso=Server.CreateObject("Scripting.FileSystemObject") 
Seta=fso.OpenTextFile(filename,1,FALSE)"ForReading--〉1 
done=a.AtEndOfStreamortext_match 
DoWhilenotdone 
retstring=a.ReadLine 
find_pos=instr(retstring,search_string) 
iffind_pos〉0thentext_match=true 
done=a.AtEndOfStreamortext_matchLoop 
a.Close 
endfunction 
〈/script〉 
〈/body〉 
〈/html〉




標(biāo)簽:用ASP做全文檢索