用ASP做全文檢索
發(fā)表時(shí)間:2023-08-21 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]摘要:通過詞句查找相關(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〉