顾 健 黄汉永
(中南大学信息工程学院 )
摘 要 在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
%>