程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> 用asp編寫類似搜索引擎功能的代碼

用asp編寫類似搜索引擎功能的代碼

編輯:關於ASP編程

    首先建一個access 數據庫,庫中有一個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 String 
        Response.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> 
     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved