资源描述:
《如何实现动态网站的站内自动检索》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、应用技术研究如何实现动态网站的站内自动检索李明生【摘要】网站实现站内检索已经成为一个站点的基本要求,也是站点维护者必须解决的问题,本文以ASP技术为例,说明了如何利用递归算法实现在站内的自动检索。【关键词】动态网站站内搜索递归文件检索作者简介:李明生男信息工程系助教应用技术研究自从有了计算机以后,人类开始用计算机保存信息,有保存,就有查找,于是检索技术诞生了。随着计算机网络的迅猛发展,文本检索技术的发展发展可谓日新月异、与时俱进,人们开始习惯互联网的检索时代,站内检索的需求也已经显露出来。一、为什么有了搜索引擎还需要站内检索用网际搜索引擎不是直接可以查找吗?这其中有两个问题:1搜索足
2、球,你会搜索到48,300,000个网页,也不知道我公司的排在第10,000页还是10,001页,搜索者可能永远也不会去看。2网际搜索引擎通过网络Spider收集网页,对于网站内隐藏很深的网页很难检索到的。二、本文实现的功能1.目前互联网采用较多的一种技术是利用数据库实现站内搜索。该方法固然有其优势,但一个不容忽视的方面是该方法需要较多的后期维护,而且不支持文本型文件的检索,对于关键字的整理也很难取舍。2.本文提供的程序可以将其放在站点的任何目录下,它将对该站点下的所有文本型文件进行检索,支持下级无限目录。三、该系统采用的相关技术和功能实现1.REQUEST和RESPONSE对象在A
3、SP中的应用。2.ASP环境变量在应用程序中的作用。3.服务器端文件和文件夹的操作技术的具体应用。4.VBScript的字符串操作函数在程序设计中的灵活性。5.递归算法在程序设计中的强大功能。6.我们只查找文本类型的文件,即能用记事本打开查看内容的文件类型,包括.htm、.html、.js、.css、.txt、.asp、.xml等文件。7.把查找到的结果显示出来,包括关键字附近的内容及具体的文件路径。8.若被检索文件中含有多处关键字,只显示第一处。9.为安全及显示效果问题,我们去掉文件标签后显示;如果标签内部含有关键字,可以检索出来,但无法显示其具体内容。10.程序代码在IIS5.1
4、下调试通过。四、关键代码及说明<%IfRequest("Caps")="on"ThenbolCaps=0ElsebolCaps=1//0区分大小写,1不区分SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")strRoot=left(request.servervariables("path_info"),InStrRev(request.servervariables("path_info"),"/")-1)//取得该文件的虚拟路径RealPath=Server.MapPath(strroot)//取得完整的实际路径
5、VirtualPath="http://"&Request.ServerVariables("SERVER_NAME")&strRoot//取得完整的URLSetobjFolder=objFSO.GetFolder(RealPath)schSubFolder(objFolder)SubschSubFol(objFolder)//递归函数ForEachobjFileinobjFolder.FilesIfResponse.IsClientConnectedThen//取要检索文件的扩展名IfMid(objFile.Name,Len(objFile.Name)-1,1)="."Thenst
6、rExt=Mid(objFile.Name,Len(objFile.Name)-1,2)ElseIfMid(objFile.Name,Len(objFile.Name)-2,1)="."ThenstrExt=Mid(objFile.Name,Len(objFile.Name)-2,3)ElseIfMid(objFile.Name,Len(objFile.Name)-3,1)="."ThenstrExt=Mid(objFile.Name,Len(objFile.Name)-3,4)2应用技术研究ElseIfMid(objFile.Name,Len(objFile.Name)-4,1)=
7、"."ThenstrExt=Mid(objFile.Name,Len(objFile.Name)-4,5)EndIfIfInstr(1,strFile,strExt,1)Then//如果该文件扩展名符合要检索的扩展名strFileSetobjTextStream=objFSO.OpenTextFile(objFile.Path,1)strContent=objTextStream.ReadAllobjTextStream.CloseifInStr(1,st