首先建一个access 数据库,库中有一个URLINDEX表,其中URL和Keywords字段分别添加了索引,如下:
| 以下为引用的内容: URL 文本(索引:有(无重复)) Title文本 Description文本 Summary文本 Keywords文本(索引:有(无重复)) |
程序文件doquery.asp,代码:
| 以下为引用的内容: <HTML><HEAD><TITLE>简单搜索引擎</TITLE></HEAD> <BODYBGCOLOR=#ffffffMARGINWIDTH=0MARGINHEIGHT=0 LEFTMARGIN=0TOPMARGIN=0> <FORMMETHOD=postACTION=doquery.asp?act=search> Query:<INPUTTYPE=TextNAME=QueryString><BR> <INPUTTYPE=SubmitVALUE=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.opendriver={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))<>ORandUCase(QueryWords(i))<>ANDThen IfuCase(QueryWords(i-1))=ORThen 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))<>ORandUCase(QueryWords(i))<>ANDThen IfuCase(QueryWords(i-1))=ORThen 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))<>ORandUCase(QueryWords(i))<>ANDThen IfuCase(QueryWords(i-1))=ORThen 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))<>ORandUCase(QueryWords(i))<>ANDThen IfuCase(QueryWords(i-1))=ORThen 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> |