首先建一個access 數據庫,庫中有一個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 = " "
’ 如果搜索為空則返回
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 ) & "%’"