熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

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

2013-11-13 10:41:08  來源: .NET編程 

  首先建一個access 數據庫庫中有一個URLINDEX表其中URL和Keywords字段分別添加了索引如下
 

URL             文本 (索引:有(無重復))
Title            文本
Description 文本
Summary    文本
Keywords   文本(索引:有(無重復)) 程序文件doqueryasp代碼
<HTML><HEAD><TITLE>簡單搜索引擎</TITLE></HEAD>
<BODY BGCOLOR=#ffffff MARGINWIDTH="" MARGINHEIGHT="
LEFTMARGIN= TOPMARGIN=
<FORM METHOD="post" ACTION="doqueryasp?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 = Requestform( "QueryString" )
 QueryWords  = Split( QueryString )
 strIndent   = "          "
 
 ’ 如果搜索為空則返回
 If QueryString = "" Then
  ResponseRedirect( "defaultasp" )
 End If
 
 Sessiontimeout = 
 If IsObject(Session("sitesearch_conn")) Then
     Set conn = Session("sitesearch_conn")
 Else
     Set conn = ServerCreateObject("ADODBConnection")
     connopen "driver={Microsoft Access Driver (*mdb)};dbq=" & ServerMapPath("database/SiteSearchmdb")""""
     Set Session("sitesearch_conn") = conn
 End If

 ’ 查詢語句
 sql = "SELECT * FROM [URLIndex] WHERE" 
     
 ’搜索Description字段
 sql = sql & " ( [Description] LIKE ’%" & QueryWords(  ) & "%’"   ’ First
 For i = LBound( QueryWords ) +  to UBound( QueryWords )
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
   If uCase( QueryWords( i ) ) = "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(  ) & "%’"
 For i = LBound( QueryWords ) +  to UBound( QueryWords )
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
   If uCase( QueryWords( i ) ) = "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(  ) & "%’"
 For i = LBound( QueryWords ) +  to UBound( QueryWords )
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
   If uCase( QueryWords( i ) ) = "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(  ) & "%’" 
 For i = LBound( QueryWords ) +  to UBound( QueryWords ) 
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then 
   If uCase( QueryWords( i ) ) = "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 = ServerCreateObject("ADODBRecordset") 
    rsOpen sql conn        
     
    ResponseWrite "<BR><B> 你搜索的是: </B> " & QueryString     
     
    ResponseWrite "<BR><B> 搜索的關鍵字: </B> " 
 For i = LBound( QueryWords ) to UBound( QueryWords ) 
  ResponseWrite "<BR>" & strIndent & i & ": " & QueryWords( i ) 
 Next 

    ’ Print the SQL String 
    ResponseWrite "<BR><B> sql 語句 : </B> " & sql 
  
 ’ Print the Results 
    ResponseWrite "<BR><B> 結果    : </B> <UL>" 
 On Error Resume Next 
 rsMoveFirst 
 Do While Not rseof 
  ResponseWrite "<BR>" & "<A HREF=’OpenPageasp?IndexURL=" & rsFields("URL")Value & "’>" & rsFields("Title") & "</A>  "  
  ResponseWrite rsFields("Description") & "<BR>" 
  ResponseWrite "     <FONT SIZE=>URL: " & rsFields("URL") & "</FONT>" 
  ResponseWrite "<HR SIZE= WIDTH= ALIGN=LEFT>" 
  rsMoveNext 
 Loop 
 ResponseWrite "</UL>" 
  
end if    
%> 


</BODY> 
</HTML> 
 


From:http://tw.wingwit.com/Article/program/net/201311/14292.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.