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