>>首页
asp简单的搜索引擎代码
2005-11-11 16:30:00

下面是库中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   = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
 
 ' 如果搜索为空则返回
 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> 结果&nbsp;&nbsp;&nbsp;&nbsp;: </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 '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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>


[ 打印本页 ] [ 关闭窗口 ] [ 返回顶部]