首先建一個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> |