当前位置: 首页 > 图文教程 > 网络编程 > ASP > 用asp编写类似搜索引擎功能的代码

ASP
关于释放session的两篇文章(一)
关于释放session的两篇文章(二)
表单填写时用回车代替TAB的实现方式
DateDiff的用法
加快DHTML的一组技巧
全面考察“禁用浏览器后退按钮”
XML加ASP实现网页“本地化”
透过ASP修改NT使用者的密码
方便购买的电子商务站点设计技巧
使用ASPMail组件发送数字卡片
聊天室关键技术[用户断线]处理
生成类似Windows资源管理器
如何将代码生成的文件设为只读
ASP中巧用存储过程
拦截表单的另外一种写法
ASP实现OICQ式的信息收发功能
怎样用HtmlEncode显示Unicode?
ASP出错集成处理
ASP.NET中处理datetime的一些通用函数
ASP.NET实现HTTP方式获取功能

ASP 中的 用asp编写类似搜索引擎功能的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 131 ::
收藏到网摘: n/a

首先建一个access 数据库,库中有一个URLINDEX表,其中URL和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>