asp简单的搜索引擎代码

下面是库中URLINDEX表:URL和Keywords字段分别添加了索引.

URL 文本 (索引:有(无重复))
Title 文本
Description 文本
Summary 文本
Keywords 文本(索引:有(无重复))

doquery.asp

1<html><head><title>简单搜索引擎</title></head>
2<body bgcolor="#ffffff" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">
3<form action="doquery.asp?act=search" method="post">   
4Query: <input name="QueryString" type="Text"/><br/>
5<input type="Submit" value="Submit"/>
6</form>
7
8
9  

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=" &amp; Server.MapPath("database/SiteSearch.mdb"),"",""
Set Session("sitesearch_conn") = conn
End If

' 查询语句
sql = "SELECT * FROM [URLIndex] WHERE"

'搜索Description字段
sql = sql &amp; " ( [Description] LIKE '%" &amp; QueryWords( 0 ) &amp; "%'" ' First
For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
If QueryWords( i ) &lt;&gt; "" and UCase( QueryWords(i) ) &lt;&gt; "OR" and UCase( QueryWords(i) ) &lt;&gt; "AND" Then
If uCase( QueryWords( i-1 ) ) = "OR" Then
sql = sql &amp; " OR [Description] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
Else
sql = sql &amp; " AND [Description] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
End If
End If
Next

' 搜索Keywords字段
sql = sql &amp; " ) OR ( [Keywords] LIKE '%" &amp; QueryWords( 0 ) &amp; "%'"
For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
If QueryWords( i ) &lt;&gt; "" and UCase( QueryWords(i) ) &lt;&gt; "OR" and UCase( QueryWords(i) ) &lt;&gt; "AND" Then
If uCase( QueryWords( i-1 ) ) = "OR" Then
sql = sql &amp; " OR [Keywords] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
Else
sql = sql &amp; " AND [Keywords] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
End If
End If
Next

' 搜索Title字段
sql = sql &amp; " ) OR ( [Title] LIKE '%" &amp; QueryWords( 0 ) &amp; "%'"
For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
If QueryWords( i ) &lt;&gt; "" and UCase( QueryWords(i) ) &lt;&gt; "OR" and UCase( QueryWords(i) ) &lt;&gt; "AND" Then
If uCase( QueryWords( i-1 ) ) = "OR" Then
sql = sql &amp; " OR [Title] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
Else
sql = sql &amp; " AND [Title] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
End If
End If
Next

' 搜索Summary字段
sql = sql &amp; " ) OR ( [Summary] LIKE '%" &amp; QueryWords( 0 ) &amp; "%'"
For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
If QueryWords( i ) &lt;&gt; "" and UCase( QueryWords(i) ) &lt;&gt; "OR" and UCase( QueryWords(i) ) &lt;&gt; "AND" Then
If uCase( QueryWords( i-1 ) ) = "OR" Then
sql = sql &amp; " OR [Summary] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
Else
sql = sql &amp; " AND [Summary] LIKE '%" &amp; QueryWords( i ) &amp; "%'"
End If
End If
Next

sql = sql &amp; " )"

'
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

Response.Write "<br/><b> 你搜索的是: </b> " &amp; QueryString

Response.Write "<br/><b> 搜索的关键字: </b> "
For i = LBound( QueryWords ) to UBound( QueryWords )
Response.Write "<br/>" &amp; strIndent &amp; i &amp; ": " &amp; QueryWords( i )
Next

' Print the SQL String
Response.Write "<br/><b> sql 语句 : </b> " &amp; sql

' Print the Results
Response.Write "<br/><b> 结果    : </b> <ul>"
On Error Resume Next
rs.MoveFirst
Do While Not rs.eof
Response.Write "<br/>" &amp; "<a href='OpenPage.asp?IndexURL=" &amp; rs.Fields("URL").Value &amp; "'>" &amp; rs.Fields("Title") &amp; "</a> - "
Response.Write rs.Fields("Description") &amp; "<br/>"
Response.Write "     <font size="2">URL: " &amp; rs.Fields("URL") &amp; "</font>"
Response.Write "<hr align="LEFT" size="1" width="200"/>"
rs.MoveNext
Loop
Response.Write "</ul>"

end if

1
2  
3</body>
4</html>

Published At
Categories with Web编程
Tagged with
comments powered by Disqus