用ASP做全文檢索
發(fā)表時間:2023-08-21 來源:明輝站整理相關軟件相關文章人氣:
[摘要]摘要:通過詞句查找相關的全文是瀏覽器端常用的方法,ASP類似于CGI,也可以進行簡單的文本方式全文檢索 在Internet/Intranet上對某類信息做詳細瀏覽和全文檢索也是常碰到的情況。ASP是...
摘要:通過詞句查找相關的全文是瀏覽器端常用的方法,ASP類似于CGI,也可以進行簡單的文本方式全文檢索
在Internet/Intranet上對某類信息做詳細瀏覽和全文檢索也是常碰到的情況。ASP是微軟公司開發(fā)的用于制作動態(tài)Web頁的一種服務器端腳本型式(或曰編寫環(huán)境)。它使用VBScript或JavaScript等簡易的腳本語言,集成在HTML碼中,在服務器端響應瀏覽器端請求而執(zhí)行數據訪問和過程(或對象)調用并產生瀏覽器端執(zhí)行的腳本語言。本文介紹用ASP編寫全文檢索代碼的方法。
方法介紹:
確定被檢索的文件。將它們保存在同一文件夾中。文件的類型可以是任何文本類型(包括.htm網頁文件類型)
建立被檢索文件的信息庫。其中主要包含文件名,文件標題等。
用ADO方式訪問數據庫。建立記錄集對象。
逐個打開記錄集中當前記錄所指向的文件。用查找的字串對文件的全文本進行匹配比較。
將符合條件的文件標題輸出到客戶端Web頁,并加入指向該文件的超鏈,以供用戶選擇瀏覽。
技術要點:
數據源。要在創(chuàng)建腳本之前,利用Windows95控制面板中的ODBC指定要訪問的數據庫及其驅動程序,以數據源名(DSN)標識之。
匹配字串的長度。由于瀏覽器端的數據經過編碼傳到服務器端,ASP通過其內建對象Request取得的數據也并非完全是用戶輸入的有用信息
,所以要加以處理。可以在輸入字串后附加一標志字符(如#或chr(7))。本文則采取另一種方法,即計算有效信息的長度。從而截取所需的
字串。
創(chuàng)建腳本的文件系統(tǒng)對象Scripting.FileSystemObject,從而打開文本流以讀入。
特點:
直接對.htm文件進行全文檢索,省卻許多轉換過程。.htm文件又用于網頁的顯示,一舉兩得。
應用ASP,簡單明了,易于實現。
本例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〉查找結果〈/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〉