"yutianen@163.com
′
dim query
query=request("so")
if query=""then
response.end
end if
"建立索引服务器查询对象
dim ixQuery
set ixQuery=Server.CreateObject("ixsso.Query")
"设定使用的列
ixQuery.Columns="doctitle,path,size,rank"
"设定排序,按rank升序排列(从大到小)
ixQuery.SortBy="rank[d],doctitle"
"设定查询结果显示的最大值
ixQuery.MaxRecords=5
"设定对应的索引编录
ixQuery.Catalog="test"
"设定查询关键词
ixQuery.Query=query
"建立查询结果集
dim queryRS
set queryRS=ixQuery.CreateRecordSet("nonsequential")
"如果查询结果为空,停止执行
if queryrs.eof then
response.write"no result"
response.end
end if
"如果查询结果不为空,则显示结果
response.write"<table border=1bordercolor=red>"
response.write"<tr><td>num</td><td>doctitle</td><td>path</td><td>size
</td><td>rank</td></tr>"
num=0
do while not queryRS.EOF
num=num+1
dim docTitle
docTitle=queryRS("doctitle")
if docTitle=""then docTitle="no title"
dim path
path=queryRS("path")
dim size
size=queryRS("size")
dim rank
rank=queryRS("rank")
response.write"<tr><td>"& num &"</td><td>"& doctitle &"</td><td>"& path &"</td>"
response.write"<td>"& size &"</td><td>"& rank &"</td></tr>"
queryRS.MoveNext()
loop
response.write"</table>"
%>
在搜索栏中输入“鲧”,单击“search”按钮。
在这个例子的基础上,还可以做一些调整。将此文件放入含有被检索文件的虚拟目录中,然后,对path进行调整,或者使用vpath属性。这样就可以实现站内搜索了。
这里,新建文件“so.asp”作为搜索引擎程序,将其放入E:docs文件夹中,然后对E:docs建立虚拟目录,名为“tianen”。
具体的程序如下所示。
案例名称:Web搜索
程序名称:so.asp
<%
′
"作者:于天恩
"yutianen@163.com
<form action=so.asp>
<input name="so"><input type=submit value="search">
</form>
<%
′
"作者:于天恩
"yutianen@163.com
′
dim query
query=request("so")
if query=""then
response.end
end if
"建立索引服务器查询对象
dim ixQuery
set ixQuery=Server.CreateObject("ixsso.Query")
"设定对应的索引编录
ixQuery.Catalog="test"
"设定使用的列
ixQuery.Columns="filename,doctitle,path,size,rank,write"
"设定排序,按rank升序排列(从大到小)
ixQuery.SortBy="rank[d],doctitle"
"设定查询结果显示的最大值
ixQuery.MaxRecords=5
"设定查询关键词
ixQuery.Query=query &"@ size<1000000,@ write>2005/8/26"
"建立查询结果集
dim queryRS
set queryRS=ixQuery.CreateRecordSet("nonsequential")
"如果查询结果为空,停止执行
if queryrs.eof then
response.write"no result"
response.end
end if
"如果查询结果不为空,则显示结果
response.write"<table border=1bordercolor=red>"
response.write"<tr><td>num</td><td>doctitle</td><td>path</td><td>size</td><td>rank</td></tr>"
num=0
do while not queryRS.EOF
num=num+1
dim filename
filename=queryRS("filename")
dim docTitle
docTitle=queryRS("doctitle")
if docTitle=""then docTitle="no title"
dim path
path=queryRS("path")
dim size
size=queryRS("size")
dim rank
rank=queryRS("rank")
response.write"<tr><td>"& num &"</td><td>"& doctitle &"</td><td>"&"<a href="http://localhost/tianen/"& right(path,len(path)-8)&"">"& filename &"</a></td>"
response.write"<td>"& size &"</td><td>"& rank &"</td></tr>"
queryRS.MoveNext()
loop
response.write"</table>"
%>"
在搜索栏中输入“大禹”,单击“search”按钮。
本章的内容到此结束,当然,在这个程序的基础上还可以添加一些功能,比如:添加分页功能、限定搜索文档的时间范围、搜索关键词拆分和提示等功能。限于篇幅,不再赘述。感兴趣的读者可以寻找资料继续学习,遇到不懂的地方还可以给笔者发邮件。
小结
本章介绍了利用Windows索引服务实现全文搜索的原理和使用方法,并且给出了用来解决实际问题的方案。建议读者对SQL Server的运行机制查询资料自学一下,这是非常重要的。
思考与练习
1.Windows索引服务实现全文搜索的原理是什么?
2.开发一套全文搜索系统(使用SQL Server的方法)。