下面是库中URLINDEX表:URL和Keywords字段分别添加了索引.
    
        
            | URL           文本 (索引:有(无重复)) Title            文本
 Description 文本
 Summary    文本
 Keywords   文本(索引:有(无重复))
 | 
    
doquery.asp
    
        
            |  <HTML><HEAD><TITLE>简单搜索引擎</TITLE></HEAD><BODY BGCOLOR=#ffffff MARGINWIDTH="0" MARGINHEIGHT="0"
 LEFTMARGIN=0 TOPMARGIN=0>
 <FORM METHOD="post" ACTION="doquery.asp?act=search">Query: <INPUT TYPE="Text" NAME="QueryString"><BR>
 <INPUT TYPE="Submit" VALUE="Submit">
 </FORM>
 </CENTER>
 <%
 dim act
 act=request("act")
 if(act="search") then
 QueryString = Request.form( "QueryString" )
 QueryWords  = Split( QueryString )
 strIndent   = "          "
 
 ' 如果搜索为空则返回
 If QueryString = "" Then
 Response.Redirect( "default.asp" )
 End If
 
 Session.timeout = 2
 If IsObject(Session("sitesearch_conn")) Then
 Set conn = Session("sitesearch_conn")
 Else
 Set conn = Server.CreateObject("ADODB.Connection")
 conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("database/SiteSearch.mdb"),"",""
 Set Session("sitesearch_conn") = conn
 End If
  ' 查询语句sql = "SELECT * FROM [URLIndex] WHERE"
 
 '搜索Description字段
 sql = sql & " ( [Description] LIKE '%" & QueryWords( 0 ) & "%'"   ' First
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
 If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
 If uCase( QueryWords( i-1 ) ) = "OR" Then
 sql = sql & " OR [Description] LIKE '%" & QueryWords( i ) & "%'"
 Else
 sql = sql & " AND [Description] LIKE '%" & QueryWords( i ) & "%'"
 End If
 End If
 Next
  ' 搜索Keywords字段 sql = sql & " ) OR ( [Keywords] LIKE '%" & QueryWords( 0 ) & "%'"
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
 If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
 If uCase( QueryWords( i-1 ) ) = "OR" Then
 sql = sql & " OR [Keywords] LIKE '%" & QueryWords( i ) & "%'"
 Else
 sql = sql & " AND [Keywords] LIKE '%" & QueryWords( i ) & "%'"
 End If
 End If
 Next
 '  搜索Title字段
 sql = sql & " ) OR ( [Title] LIKE '%" & QueryWords( 0 ) & "%'"
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
 If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
 If uCase( QueryWords( i-1 ) ) = "OR" Then
 sql = sql & " OR [Title] LIKE '%" & QueryWords( i ) & "%'"
 Else
 sql = sql & " AND [Title] LIKE '%" & QueryWords( i ) & "%'"
 End If
 End If
 Next
 ' 搜索Summary字段
 sql = sql & " ) OR ( [Summary] LIKE '%" & QueryWords( 0 ) & "%'"
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
 If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
 If uCase( QueryWords( i-1 ) ) = "OR" Then
 sql = sql & " OR [Summary] LIKE '%" & QueryWords( i ) & "%'"
 Else
 sql = sql & " AND [Summary] LIKE '%" & QueryWords( i ) & "%'"
 End If
 End If
 Next
  sql = sql & " )" '
 Set rs = Server.CreateObject("ADODB.Recordset")
 rs.Open sql, conn, 3, 3
 
 Response.Write "<BR><B> 你搜索的是: </B> " & QueryString
 
 Response.Write "<BR><B> 搜索的关键字: </B> "
 For i = LBound( QueryWords ) to UBound( QueryWords )
 Response.Write "<BR>" & strIndent & i & ": " & QueryWords( i )
 Next
     ' Print the SQL StringResponse.Write "<BR><B> sql 语句 : </B> " & sql
 
 ' Print the Results
 Response.Write "<BR><B> 结果    : </B> <UL>"
 On Error Resume Next
 rs.MoveFirst
 Do While Not rs.eof
 Response.Write "<BR>" & "<A HREF='OpenPage.asp?IndexURL=" & rs.Fields("URL").Value & "'>" & rs.Fields("Title") & "</A> - "
 Response.Write rs.Fields("Description") & "<BR>"
 Response.Write "     <FONT SIZE=2>URL: " & rs.Fields("URL") & "</FONT>"
 Response.Write "<HR SIZE=1 WIDTH=200 ALIGN=LEFT>"
 rs.MoveNext
 Loop
 Response.Write "</UL>"
 
 end if
 %>
 </BODY>
 </HTML>
 |