您要打印的文件是:使用FSO进行全文检索

使用FSO进行全文检索

作者:JARON    转贴自:JARON    点击数:2996


<HTML>
<HEAD>
<TITLE>'<%=Request(SearchText)%>'的搜索结果</TITLE>
</HEAD>
<BODY>
<B>'<%=Request(SearchText)%>'的搜索结果</B><BR>
<%
Const fsoForReading = 1
Dim objFile, objFolder, objSubFolder, objTextStream
Dim bolCase, bolFileFound, bolTagFound
Dim strCount, strDeTag, strExt, strFile, strContent, strRoot, strTag, strText, strTitle, strTitleL
strFile = .asp .htm .html .js .txt .css
strRoot = /
strText = Request(SearchText)
strTag = Chr(37) & Chr(62)
bolFileFound = False
bolTagFound = False
If Request(Case) = on Then bolCase = 0 Else bolCase = 1
Set objFSO = Server.CreateObject(Scripting.FileSystemObject)
RealPath=Server.MapPath(strRoot)
VirtualPath=http:// & Request.ServerVariables(SERVER_NAME)
Set objFolder = objFSO.GetFolder(RealPath)
schSubFol(objFolder)
Sub schSubFol(objFolder)
on error resume next
For Each objFile in objFolder.Files
  If strText = Then Exit Sub
  If Response.IsClientConnected Then
    Set objTextStream = objFSO.OpenTextFile(objFile.Path,fsoForReading)
    strContent = objTextStream.ReadAll
    If InStr(1, strContent, strTag, bolCase) Then
    Else
      If Mid(objFile.Name, Len(objFile.Name) - 1, 1) = . Then strExt = Mid(objFile.Name, Len(objFile.Name) - 1, 2)
      If Mid(objFile.Name, Len(objFile.Name) - 2, 1) = . Then strExt = Mid(objFile.Name, Len(objFile.Name) - 2, 3)
      If Mid(objFile.Name, Len(objFile.Name) - 3, 1) = . Then strExt = Mid(objFile.Name, Len(objFile.Name) - 3, 4)
      If Mid(objFile.Name, Len(objFile.Name) - 4, 1) = . Then strExt = Mid(objFile.Name, Len(objFile.Name) - 4, 5)
      If InStr(1, strContent, strText, bolCase) And Instr(1, strFile, strExt, 1) Then
        If InStr(1, strContent, <TITLE>, 1) Then
          strTitle = Mid(strContent, InStr(1, strContent, <TITLE>, 1) + 7, InStr(1, strContent, </TITLE>, 1))
        Else
          strTitle = 未命名
        end if
        myFile=objFile.Path
        myFile=replace(myfile,RealPath,VirtualPath,1,-1,1)
        myFile=replace(myfile,\,/)
        strCount = strCount + 1
        Response.Write <DL><DT><B><I>& strCount  &</I></B> - <A HREF= & myFile & > & strTitle & </A></A></DT><BR><DD>
        strTitleL = InStr(1, strContent, </TITLE>, 1) - InStr(1, strContent, <TITLE>, 1) + 7
        strDeTag =
        bolTagFound = False
        Do While InStr(strContent, <)
          bolTagFound = True
          strDeTag = strDeTag & & Left(strContent, InStr(strContent, <) - 1)
          strContent = MID(strContent, InStr(strContent, >) + 1)
        Loop
        strDeTag = strDeTag & strContent
        If Not bolTagFound Then strDeTag = strContent
        Response.Write replace(Mid(strDeTag, strTitleL, 200),strText,<font color=red> & strText & </font>,1,-1,bolcase)
        Response.Write ...<BR><b><FONT SIZE='2'>URL: & myFile
        Response.Write - 上次修改时间: & objFile.DateLastModified
        Response.Write - & FormatNumber(objFile.Size / 1024)
        Response.Write Kbytes</FONT></b></DD></DL>
        bolFileFound = True
      End If
      objTextStream.Close
    End If
  End If
Next
End Sub
For Each objSubFolder in objFolder.SubFolders
    schSubFol(objSubFolder)
Next
If Not bolFileFound then Response.Write 没有匹配结果
If bolFileFound then Response.Write <B>搜索结束</B>
Set objTextStream = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%>
</BODY></HTML>