Win2000索引服务的WEB应用

时间:2022-06-08 08:28:53

Win2000索引服务的WEB应用

摘要 在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 service

server side object,即sso,提供了建立及管理recrodsets和查询的控制,利用sso获得index

server建立的目录及文件索引,再用后端的描述语言vbscript或者javascript格式化传回前端。

sso对象

query对象

属性名称 数据类型 功能描述

allowenumeration boolean 是否允许递归搜索目录索引,缺省是false

ciscope string 指定搜索的路径,多于一个路径的话用逗号分开

columns string 从ole db recordset取出的字段

maxrecords long 希望取得的记录数

query string 查询限制条件

sortby string 根据哪个字段排序

query方法 method

方 法 功 能 描 述

createrecordset 建立adorecordset,有sequential和nonsequential

definecolumn 给查询的字段定义一个别名

querytourl 转换为url参数

setqueryfromurl 设定query对象及相关内容

utility对象

方 法 描 述

addscopetoquery 加入查询路径

htmlencode 给指定的字符串按照html编码

urlencode 按照url编码规则应用到给定的字符串

可用的文件信息

属性名称 功 能 功 能 描 述

characterization 文件的摘要

docauthor 文件的作者

rank 排名

docsubject 文件的主题

doctitle 文件的标题

filename 文件名

vpath 文件的完整虚拟路径

size 文件大小(byte)

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

%>

<html><body bgcolor="#ffffff" background="../b.jpg"><h2>index server 搜索引擎<hr></h2>

<form action=<%=myself%> method=get>

关键字:<input type=text name=keyword value="<%=keyword%>"><br>

路 径:<input type=text name=path value="<%=path%>">

(可省略,输入详细路径如/news/2001-10-18)<br>

最大文件数:<input type=text name=maxrecords value="<%=maxrecords%>"><br>

<input type=submit name=send value=" 搜 索 ">

</form><%

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") ‘建立记录集%>

<hr>

<blockquote><%

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

%>

<b><%=recno & ". "%><%=rs("doctitle")%></b><br>

<b>摘要:</b><%=rs("characterization")%><br>

<b>网址:</b><a href=<%=rs("vpath")%>><%=rs("vpath")%></a><br>

<b>时间: </b><%=rs("write")%><br>

<b>大小: </b><%=rs("size")%><p>

<% rs.movenext

if rs.eof then exit for

next

%></table></blockquote>

<div align=right><form action=<%=myself%> method=get><hr>

<%if page <> 1 then ' 如果不是位于第一页 %>

<a href=<%=myself%>?page=1<%=param%>>第一页</a>

<a href=<%=myself%>?page=<%=(page-1)%><%=param%>>上一页</a>

<%end if

if page <> rs.pagecount then ' 如果不是位于最后一页%>

<a href=<%=myself%>?page=<%=(page+1)%><%=param%>>下一页</a>

<a href=<%=myself%>?page=<%=rs.pagecount%><%=param%>>最后一页</a>

<%end if%>

输入页号:<input type=text name=page size=3>

页号:<font color="red"><%=page%>/<%=rs.pagecount%></font>

</form></p></div>

<%end if%>

<%if request("msg") <> empty then %>

<hr><font color=red><%=request("msg")%></font>

<%end if%></body></html> 4 小结

通过运用index sever对象属性,就可以达到站内搜索功能的很好效果,增加了网站的功能,不

需要外部的搜索,提高了查找效率,方便了网站浏览,在网站的运行里面,该搜索系统表现良好,速

度也很快,界面也很类似我们经常使用的互联网上一些著名的搜索引擎。

参考文献

微软公司

清华大

学出版社 廖信彦著,asp应用大全-asp与数据库整合,2000年.

上一篇:浅谈民族艺术与大众化消费的反思与思考 下一篇:S7—200系列PLC与计算机网络通信的构建