最新更新 sitemap 设计搜素
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
网上家居 虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442

对没有数据库索引的静态页面实现站内搜索

日期:03-02    来源:|    作者:

静态页面对于搜索引擎索引是非常友好的,对于大型网站,seo们经常需要将完全依靠操作数据库呈现的页面,改用生成静态html页面的内容发布系统,来实现网站后台文章发布与管理。

    但是这样的情况,站内搜索一般还需要操作数据库。如何不操作数据库而直接按关键词索引站内的页面?

    实际上用一个asp文件即可实现此功能,以下是一个简单的例子,需要的时候可以根据网站风格做界面和功能调整。

    经过测试,我发现对于网页数量较多的站点,代码执行速度比较慢,不如直接操作数据库效率高,但这个功能的实现,对于小型网站的站内搜索也许更为适合。代码如下:

<%
Head = "站内搜索"
SearchString = Request("SearchString")
count=0

'把当前目录的实际路径转换为虚拟路径
Function UnMapPath( Path )
    UnMapPath = Replace(Mid(Path, Len(Server.MapPath("/")) + 1), "", "/")
End Function


Function SearchFile( f, s, title )
   Set fo = fs.OpenTextFile(f)
   content = fo.ReadAll
   fo.Close
   SearchFile = InStr(1, content, S, vbTextCompare) > 0
   If SearchFile Then
      pos1 = InStr(1, content, "<TITLE>", vbTextCompare)
      pos2 = InStr(1, content, "</TITLE>", vbTextCompare)
      title = ""
      If pos1 > 0 And pos2 > 0 Then
         title = Mid( content, pos1 + 7, pos2 - pos1 - 7 )
      End If
   End If
End Function

Function FileLink( f, title )
   vPath = UnMapPath( f.Path )
   If title = "" Then title = f.Name
   FileLink = "<A HREF=""" &  vPath & """>" & title & "</A>"
   FileLink = "<UL>·" & FileLink & "</UL>"
End Function

Sub SearchFolder( fd, s )
   found = False 
   For each f In fd.Files
      pos = InStrRev(f.Path, "." )
      If pos > 0 Then
         ext = Mid(f.Path, pos + 1 )
      Else
         ext = ""
      End If
      If LCase(ext) = "htm" Then
         If SearchFile( f, s, title ) Then
            Response.Write FileLink(f, title)
            count=count+1
            ' Response.Write cstr(count)
         End If
      End If
   Next

   For each sfd In fd.SubFolders
      SearchFolder sfd, s
   Next
End Sub
%>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80">
<title><%=Head%></title>
</head>

<body bgcolor="#FFFFFF">

<h1><%=Head%></h1>

<hr>

<!-- 注意search.asp为本文件,可根据需要修改!-->

<form action="search.asp" method="Get">
    <p>请输入欲搜索的内容: <input type="text"
    size="20" name="SearchString" value="<%=SearchString%>"> <input
    type="submit" value="搜索"> </p>
</form>
<%
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fd = fs.GetFolder( Server.MapPath("./") )   '设置开始搜索的路径(将遍历其所有子目录,当前设置为search.asp所在目录)!

If SearchString <> "" Then
   Response.Write "<H2>搜索<font color=red>" & SearchString & "</font>结果如下:</H2><P>"
   SearchFolder fd,SearchString
End If
%>
<hr>
</body>
</html>