用ASP编写一个简单的搜索引擎程序

2018-09-06 11:45

阅读:350

  用ASP编写一个简单的搜索引擎程序

  下面是库中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
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>

  技术交流永无止境


评论


亲,登录后才可以留言!