首页 > 编程 > ASP > 正文

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

2024-05-04 11:06:07
字体:
来源:转载
供稿:网友

首先建一个access 数据库,库中有一个URLINDEX表,其中URL和Keywords字段分别添加了索引,如下:

以下为引用的内容:
URL 文本(索引:有(无重复))
Title文本
Description文本
Summary文本
Keywords文本(索引:有(无重复))

程序文件doquery.asp,代码:

以下为引用的内容:
<HTML><HEAD><TITLE>简单搜索引擎</TITLE></HEAD>
<BODYBGCOLOR=#ffffffMARGINWIDTH="0"MARGINHEIGHT="0"
LEFTMARGIN=0TOPMARGIN=0>
<FORMMETHOD="post"ACTION="doquery.asp?act=search">
Query:<INPUTTYPE="Text"NAME="QueryString"><BR>
<INPUTTYPE="Submit"VALUE="Submit">
</FORM>
</CENTER>

<%
dimact
act=request("act")
if(act="search")then
QueryString=Request.form("QueryString")
QueryWords=Split(QueryString)
strIndent=""

'如果搜索为空则返回
IfQueryString=""Then
Response.Redirect("default.asp")
EndIf

Session.timeout=2
IfIsObject(Session("sitesearch_conn"))Then
Setconn=Session("sitesearch_conn")
Else
Setconn=Server.CreateObject("ADODB.Connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("database/SiteSearch.mdb"),"",""
SetSession("sitesearch_conn")=conn
EndIf

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

'搜索Description字段
sql=sql&"([Description]LIKE'%"&QueryWords(0)&"%'"'First
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)<>""andUCase(QueryWords(i))<>"OR"andUCase(QueryWords(i))<>"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Description]LIKE'%"&QueryWords(i)&"%'"
Else
sql=sql&"AND[Description]LIKE'%"&QueryWords(i)&"%'"
EndIf
EndIf
Next

'搜索Keywords字段
sql=sql&")OR([Keywords]LIKE'%"&QueryWords(0)&"%'"
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)<>""andUCase(QueryWords(i))<>"OR"andUCase(QueryWords(i))<>"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Keywords]LIKE'%"&QueryWords(i)&"%'"
Else
sql=sql&"AND[Keywords]LIKE'%"&QueryWords(i)&"%'"
EndIf
EndIf
Next

'搜索Title字段
sql=sql&")OR([Title]LIKE'%"&QueryWords(0)&"%'"
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)<>""andUCase(QueryWords(i))<>"OR"andUCase(QueryWords(i))<>"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Title]LIKE'%"&QueryWords(i)&"%'"
Else
sql=sql&"AND[Title]LIKE'%"&QueryWords(i)&"%'"
EndIf
EndIf
Next

'搜索Summary字段
sql=sql&")OR([Summary]LIKE'%"&QueryWords(0)&"%'"
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)<>""andUCase(QueryWords(i))<>"OR"andUCase(QueryWords(i))<>"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Summary]LIKE'%"&QueryWords(i)&"%'"
Else
sql=sql&"AND[Summary]LIKE'%"&QueryWords(i)&"%'"
EndIf
EndIf
Next

sql=sql&")"

'
Setrs=Server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,3,3

Response.Write"<BR><B>你搜索的是:</B>"&QueryString

Response.Write"<BR><B>搜索的关键字:</B>"
Fori=LBound(QueryWords)toUBound(QueryWords)
Response.Write"<BR>"&strIndent&i&":"&QueryWords(i)
Next

'PrinttheSQLString
Response.Write"<BR><B>sql语句:</B>"&sql

'PrinttheResults
Response.Write"<BR><B>结果:</B><UL>"
OnErrorResumeNext
rs.MoveFirst
DoWhileNotrs.eof
Response.Write"<BR>"&"<AHREF='OpenPage.asp?IndexURL="&rs.Fields("URL").Value&"'>"&rs.Fields("Title")&"</A>-"
Response.Writers.Fields("Description")&"<BR>"
Response.Write"<FONTSIZE=2>URL:"&rs.Fields("URL")&"</FONT>"
Response.Write"<HRSIZE=1WIDTH=200ALIGN=LEFT>"
rs.MoveNext
Loop
Response.Write"</UL>"
endif
%>

</BODY>
</HTML>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表