顧 健 黃漢永
(中南大學(xué)信息工程學(xué)院 )
摘 要 在WWW上面有很多全文數(shù)據(jù)檢索工具即搜索引擎(Search Engine),如Yahoo、新浪、網(wǎng)易等。微軟公司在Win2000里提供了一個(gè)工具Index Server,可以在自己的網(wǎng)站內(nèi)部架設(shè)站內(nèi)的搜索引擎,即通過(guò)Web Server(IIS)與Index Server的交互,建立自己的搜索引擎。
關(guān)鍵字 Win2000 IIS Index Server ASP ADO 全文檢索
1 前言
在網(wǎng)絡(luò)時(shí)代,通過(guò)輸入關(guān)鍵字,就能查到自己感興趣的資料,如果你制作了你自己網(wǎng)站,又想提供站內(nèi)的搜索功能,你就可以自己動(dòng)手做一套屬于你自己的站內(nèi)搜索系統(tǒng)。Windows2000提供了索引服務(wù),缺省為未安裝,通過(guò)在控制面板上的服務(wù)設(shè)置打開(kāi)Index Server服務(wù)以后,就等于擁有了一套個(gè)人專屬的搜索引擎。 通過(guò)設(shè)置,大部分的時(shí)候都不需要人工干預(yù), 在預(yù)設(shè)的情況下,系統(tǒng)負(fù)擔(dān)較輕時(shí),Index Server就會(huì)找出系統(tǒng)指定的文件夾,一般是預(yù)設(shè)的WEB站點(diǎn)及預(yù)設(shè)的FTP站點(diǎn)下所有的虛擬目錄以及自己指定的硬盤上的文件夾,接著建立及維護(hù)存儲(chǔ)文件的目錄信息。當(dāng)設(shè)置好Index Server以后,在前端輸入查詢條件,Index Server就會(huì)搜索這份索引,然后以HTML的格式傳回到前端,因?yàn)镮ndex Server事先會(huì)建立文件索引, 搜索的速度將比全文本的搜索快很多。
2 Index Server的對(duì)象和屬性
2.1 被索引的文件類型
在WEB服務(wù)器下的所有文件,Index Server一般都會(huì)建立一份索引,這些文件有HTML文件、ASP文件、Help File文件、文本文件以及Office軟件制作的文件等,甚至可以是非文本的文件類型,如可執(zhí)行文件,當(dāng)然,對(duì)這些文件無(wú)法通過(guò)有意義的文字來(lái)查詢。在實(shí)際運(yùn)用中,我們一般關(guān)心的文件是文本類型文件,如網(wǎng)頁(yè)等,基本上Index Server也能夠滿足一般的應(yīng)用要求。
2.2 Index Server查詢規(guī)則
(1) 不區(qū)分大小寫。
(2) 如果包含特殊字符如雙引號(hào)或者其他特殊字符如逗號(hào),驚嘆號(hào)等,必須要用雙引號(hào)將字符包含起來(lái)。
(3) 多條件查詢可以用逗號(hào)將關(guān)鍵字分開(kāi)。
(4) 支持布爾運(yùn)算符,例如AND、OR、NOT、NEAR、<、>等等。
2.3 Index Server查詢對(duì)象
在Windows2000中,Index Server查詢對(duì)象包含在Ixxso.dll之中,叫做Indexing ServiceServer Side Object,即SSO,提供了建立及管理Recrodsets和查詢的控制,利用SSO獲得IndexServer建立的目錄及文件索引,再用后端的描述語(yǔ)言VBScript或者javascript格式化傳回前端。
3 分頁(yè)檢索部分源代碼:
……………………………………………………………………
<%
Response.Buffer = True
MySelf = Request.ServerVariables( "PATH_INFO" )
Page = CLng(Request( "Page" ))
Path = Request( "Path" )
Keyword = Request( "Keyword" )
MaxRecords = CLng( Request( "MaxRecords" ) )
If Page <= 0 Then Page = 1
If Keyword = Empty Then Keyword = "新華網(wǎng)湖南頻道"
If MaxRecords <= 0 Then MaxRecords = 50
Param = "&Keyword=" & Server.HTMLEncode(Keyword)
Param = Param & "&Path=" & Server.HTMLEncode(Path)
Param = Param & "&MaxRecords=" & MaxRecords
%>
Index Server 搜索引擎
<%
If Request ("Send") <> Empty Or Request ("Page") <> Empty Then
Set Q = Server.CreateObject ("ixsso. Query") ‘建立Query對(duì)象
If Path <> Empty Then
Set U = Server.CreateObject ("ixsso. Util")‘建立Util 對(duì)象
U.AddScopeToQuery Q, Path, "deep" ‘設(shè)置查詢方式和路徑
End If
Q.Query = Keyword ‘關(guān)鍵字
Q.SortBy = "rank[d]" ‘排序方式
Q.Columns = "DocTitle, Characterization, Rank, VPath, Write, Size" 需要的字段
Q.MaxRecords = MaxRecords ‘最大紀(jì)錄數(shù)
Set rs = Q.CreateRecordSet("nonsequential")‘建立記錄集%>
<%
Rs.PageSize = 5
If Page < 1 Then Page = 1
If Page > rs.PageCount Then Page = rs.PageCount
If Page <= 0 Then
Msg = "搜索結(jié)果:沒(méi)有找到任何符合條件的文件!"
Msg = Server.HTMLEncode( Msg )
Response.Clear
Response.Redirect Myself & "?Msg=" & Msg & Param
End If
rs.AbsolutePage = Page
For iPage = 1 To rs.PageSize
RecNo = (Page - 1) * rs.PageSize + iPage
%>
<%=RecNo & ". "%><%=rs("DocTitle")%>
摘要:<%=rs("Characterization")%>
網(wǎng)址:><%=rs("vPath")%>
時(shí)間: <%=rs("Write")%>
大小: <%=rs("Size")%>
<% rs.MoveNext
If rs.EOF Then Exit For
Next
%>