乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      利用ASP打造站內(nèi)搜索引擎

       藥林怪人.櫻凡 2006-06-16
      不知你上網(wǎng)時(shí)注意到?jīng)]有:一些內(nèi)容豐富的網(wǎng)站,總建有一個(gè)內(nèi)容搜索引擎,你只要輸入你想閱讀資料的類(lèi)別(比如:windows98),一按“搜索”按鈕,該網(wǎng)站所有關(guān)于“windows98”的文章列表就呈現(xiàn)在你的眼前,好不方便啊!要知道當(dāng)自己想要查的資料老是找不到,整天按著“下一頁(yè)”這個(gè)按鈕把頁(yè)面翻來(lái)翻去的,這真是一件煩心的事情。那么在網(wǎng)上建有家的朋友是不是也想在你的網(wǎng)站按一個(gè)這樣的搜索引擎呢?在下面我介紹如何用ASP打造一個(gè)站內(nèi)搜索引擎。當(dāng)然了,我的這個(gè)搜索引擎是不能與那些門(mén)戶(hù)網(wǎng)站的搜索引擎相比的。 注:由于搜索引擎的資料都是放在數(shù)據(jù)庫(kù)內(nèi),所以要求大家對(duì)數(shù)據(jù)庫(kù)該有一定的了解。在這里我選擇MicroSoft的Access 2000當(dāng)作存放資料的數(shù)據(jù)庫(kù),對(duì)個(gè)人網(wǎng)站的要求來(lái)講已經(jīng)綽綽有余了。數(shù)據(jù)庫(kù)的表格名稱(chēng)和字段定義如下所示,我將數(shù)據(jù)庫(kù)取名為Search.mdb。 表格名稱(chēng) 搜索引擎 字段名稱(chēng) 字段屬性 文章編號(hào) 自動(dòng)編號(hào) 文章標(biāo)題 文字(255字符) 文章網(wǎng)址 文字(255字符) 內(nèi)容簡(jiǎn)述 文字(255字符) 加入時(shí)間 日期/時(shí)間 訪問(wèn)次數(shù) 數(shù)字 最后一項(xiàng)"訪問(wèn)次數(shù)"可加可不加,如果你的網(wǎng)站有針對(duì)文章訪問(wèn)率作統(tǒng)計(jì)的話(huà),那最好將他加上,可以讓讀者做個(gè)參考,其它幾個(gè)字段應(yīng)該都是不可或缺的(對(duì)內(nèi)容網(wǎng)站而言)。數(shù)據(jù)庫(kù)建好之后接下來(lái)就是要將資料輸入了,由于本文主要是針對(duì)ASP的應(yīng)用,所以對(duì)于數(shù)據(jù)庫(kù)這部分我就不詳解了,這一部份交給大家去完成,現(xiàn)在最重要的就是讓我看看運(yùn)行搜索功能的程序該如何編寫(xiě)的。 首先你需要一個(gè)輸入搜索字符串的接口,這部分只需要一個(gè)簡(jiǎn)單的Html檔就可以完成。我把它命名為Search.htm。 Search.htm <%注:輸入的字符串將傳送到Search.asp%>
      接著就應(yīng)進(jìn)入本文的主題了。在這里我把這個(gè)程序命名為Search.asp。搜索引擎的運(yùn)作過(guò)程如下所示:將字符串傳遞給Search.asp,將目前所在頁(yè)數(shù)、搜索字符串、資料篇數(shù)傳遞至Search.asp,如果字符串是由按鈕傳來(lái)的。 YES NO NO YES NO 注:將目前所在頁(yè)數(shù)、搜索字符串、資料篇數(shù)傳遞至Search.asp: Search.asp <!--#include file="adovbs.inc"--> <%注:ACTION是判斷使用者在搜索結(jié)果之后是按下上一頁(yè)的按鈕還是下一頁(yè)的按鈕%> <% ACTION = Request.Form("ACTION") %> <%注:由PAGE判斷目前所在頁(yè)數(shù)%> <% PAGE = CInt(Request.Form("PAGE")) %> <%注:由RCOUNT來(lái)判斷目前顯示的資料是哪幾篇%> <% RCOUNT = CInt(Request.Form("RCOUNT")) %> <%注:如果是在第一頁(yè)就將PAGE設(shè)為1%> <% If RCOUNT = "" Then %> <% RCOUNT = "0" %> <% End If %> <% If RCOUNT = "0" Then %> <% PAGE = 1 %> <% End If %> <%注:從strSearchString表單中取出字符串%> <%strSearchString=Request.Form("strSearchString")%> <% 注:定義數(shù)據(jù)庫(kù)的路徑: Dim MyConnectString MyConnectString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/asp/search/Search.mdb") & ";DefaultDir=" & Server.MapPath("/asp/search") & ";DriverId=25;FILE=MS Access;MaxBufferSize=512;PageTimeout=5" 注:打開(kāi)數(shù)據(jù)庫(kù)連結(jié): Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") 注:由數(shù)據(jù)庫(kù)連結(jié)來(lái)打開(kāi)數(shù)據(jù)庫(kù) Conn.Open MyConnectString 注:將搜索到的字符串作特殊處理: strSearch1 = "" & strSearchString & "" 注:開(kāi)始定義數(shù)據(jù)庫(kù)搜索語(yǔ)法 Dim strSQL, tmpSQL strSQL = "SELECT * FROM 搜索引擎 WHERE " tmpSQL = "內(nèi)容簡(jiǎn)述 LIKE " 注:為了避免讀者不小心在字符串中輸入空格符而找不到數(shù)據(jù),所以我在這時(shí)用了一點(diǎn)字符串處理的小技巧,定義空格符初始位置為1,找出輸入字符串中空格符的位置。 Dim Pos Pos = 1 While Pos > 0 Pos = InStr(1,strSearchString," ") 注:如果輸入字符串中不包含空白字符串就不需要作字符串處理,直接進(jìn)數(shù)據(jù)庫(kù)比對(duì)資料: If Pos = 0 Then tmpSQL = tmpSQL & "‘%" & strSearchString & "%‘ OR 文章標(biāo)題 LIKE ‘%" & strSearchString & "%‘)" 注:如果輸入字符串中包含空白字符串: Else 注:將輸入字符串以空白區(qū)隔開(kāi),當(dāng)作個(gè)別搜索字符串,譬如搜索"電腦 超頻",會(huì)變成搜索"電腦"、"超頻",以"電腦 超頻"而言,當(dāng)運(yùn)行mid(strSearchString, 1, pos-1)時(shí),所得到的結(jié)果是顯示從輸入字符串的第一個(gè)字符到空格符所出現(xiàn)的位置(3)然后減1得到電腦兩個(gè)字‘而這時(shí)候搜索字符串已經(jīng)變成"電腦"接下來(lái)先算出搜索字符串的長(zhǎng)度len(strSearchString)=(5),再算出空格符加一后的位置然后運(yùn)行: Mid(strSearchString,Pos+1,len(strSearchString)), 這時(shí)就可以取出"電腦 超頻"中的超頻兩個(gè)字,此時(shí)搜索字符串已經(jīng)被分離成電腦和超頻兩個(gè)字了,如果你不用上面這段字符串處理程序,你會(huì)發(fā)現(xiàn)只要你的搜索字符串中含有空格符就會(huì)找不到數(shù)據(jù); tmpSQL = tmpSQL & "‘%" & mid(strSearchString, 1, pos-1) & "%‘ OR 文章標(biāo)題 LIKE ‘%" & mid(strSearchString, 1, pos-1) & "%‘ AND 內(nèi)容簡(jiǎn)述 LIKE " strSearchString = Mid(strSearchString,Pos+1,len(strSearchString)) End If Wend 注:將SQL語(yǔ)法分離的優(yōu)點(diǎn)是彈性大,你不需要重復(fù)定義就可以無(wú)限次套用。 strSQL = strSQL & tmpSQL strSQL = strSQL & " ORDER BY 文章編號(hào)" 經(jīng)過(guò)字符串處理程序之后,此時(shí)完整的SQL語(yǔ)法將呈現(xiàn)如下的內(nèi)容:‘SELECT * FROM 搜索引擎 WHERE 內(nèi)容簡(jiǎn)述 LIKE 電腦 OR 文章標(biāo)題 LIKE 電腦 AND 內(nèi)容簡(jiǎn)述 LIKE 超頻 OR 文章標(biāo)題 LIKE 超頻 ORDER BY 文章編號(hào)。 注:下面建立數(shù)據(jù)庫(kù)集合: Dim rsResults Set rsResults = Server.CreateObject("ADODB.Recordset") rsResults.Open strSQL, conn,3 注:計(jì)算搜索到的資料總篇數(shù),這時(shí)候的tmpSQL=(內(nèi)容簡(jiǎn)述 LIKE 電腦 OR 文章標(biāo)題 LIKE 電腦 AND 內(nèi)容簡(jiǎn)述 LIKE 超頻 OR 文章標(biāo)題 LIKE 超頻) Dim rsTotalRecords strSQL = "SELECT COUNT(*) FROM 搜索引擎 WHERE " & tmpSQL Set rsTotalRecords = Conn.Execute(strSQL) %> <%注:定義每一頁(yè)顯示的資料篇數(shù)是10篇HOWMANY = 10rsResults.PageSize = HOWMANY%> <%注:如果是按下下一頁(yè)的按鈕的話(huà)%> <% If ACTION = "FORWARD" Then %> <%注:先將目前所在頁(yè)數(shù)加一%> <% PAGE = PAGE + 1 %> <%注:再將目前顯示的資料篇數(shù)加10%> <% RCOUNT = RCOUNT + HOWMANY %> <%注:如果你是從第一頁(yè)跳到第二頁(yè),你應(yīng)該先將第1到第10篇資料略過(guò),只顯示第11篇到第20篇資料,因?yàn)樵驹诘谝豁?yè)的時(shí)候Rcount為0,加上10之后就等于10,而這10篇資料就是你所要略過(guò)的,同樣的,如果你是從第二頁(yè)跳往第三頁(yè)的話(huà),你必須略過(guò)第1篇到第20篇的資料,從第21篇資料開(kāi)始顯示rsResults.MoveNext‘就是在運(yùn)行這個(gè)略過(guò)的動(dòng)作%> <% For DACOUNT = 1 To RCOUNT %> <% rsResults.MoveNext %> <% Next %> <% End If %> <%注:相反的如果是按下上一頁(yè)按鈕的話(huà)%> <% If ACTION = "BACK" Then %> <%注:先將目前所在頁(yè)數(shù)減一%> <% PAGE = PAGE - 1 %> <5注:再將目前顯示的資料篇數(shù)減10%> <% RCOUNT = RCOUNT - HOWMANY %> <%注:如果不是在第一頁(yè)的話(huà)(RCOUNT <> 0)才要運(yùn)行資料略過(guò)的動(dòng)作%> <% If RCOUNT <> 0 Then %> <% For DACOUNT = 1 To RCOUNT %> <% rsResults.MoveNext %> <% Next %> <% End If %> <% End If %> <%注:如果數(shù)據(jù)庫(kù)中沒(méi)有符合的資料就告知讀者找不到資料%> <% if rsResults.EOF then %> 對(duì)不起,找不到你想要的資料.

      回到搜索首頁(yè) <%注:如果有找到資料就準(zhǔn)備顯示資料%> <% Else%>

      找到<%=rsTotalRecords(0)%>篇記錄 

      <% Dim Y Y=0 While Not rsResults.EOF iCurrentID = rsResults("文章編號(hào)") %> <% 注:將文章標(biāo)題含有搜索字符串的字加上特殊效果,并將轉(zhuǎn)換后的結(jié)果傳給Message變量,Replace函數(shù)的用法如下:例如你有一個(gè)字符串變量 AAA=”專(zhuān)業(yè)電腦網(wǎng)站” 如果你想將電腦這個(gè)字轉(zhuǎn)變成Computer,你可以使用如下的方法: AAA=Replace(AAA, “專(zhuān)業(yè)電腦網(wǎng)站”, “Computer”) ***結(jié)果AAA就變成專(zhuān)業(yè)Computer網(wǎng)站了*** Message = CStr(Replace(rsResults("文章標(biāo)題 "),strSearchString,strSearch1)) %> <% 注:將內(nèi)容簡(jiǎn)述含有搜索字符串的字加上特殊效果,并將轉(zhuǎn)換后的結(jié)果傳給Message1變量; Message1 = CStr(Replace(rsResults("內(nèi)容簡(jiǎn)述"),strSearchString,strSearch1)) %>

      <%注:將搜索結(jié)果顯示出來(lái)%>
      ">
    • <% =iCurrentID%>、<%=Message%>
    • <%=Message1%><%=rsResults("加入時(shí)間")%>
      訪問(wèn)次數(shù):<%=rsResults("訪問(wèn)次數(shù)")%>

      <%注:在這里我將搜索動(dòng)作設(shè)定為:當(dāng)找到10篇資料之后就停止搜索,我用到一個(gè)變量Y來(lái)控制,先定義Y等于0,每找到一篇資料就將Y加一,當(dāng)Y等于10的時(shí)候先看看數(shù)據(jù)庫(kù)是不是還有資料,如果還有資料就將剩下的資料通通略過(guò),就是rsResults.MoveNext。%> <% Y = Y + 1 rsResults.MoveNext If Y=10 then While Not rsResults.EOF rsResults.MoveNext Wend End If Wend %> <%注:準(zhǔn)備顯示上一頁(yè)和下一頁(yè)的按鈕%>

      <%注:以RCOUNT來(lái)判斷是不是在第一頁(yè),如果不是在第一頁(yè)就顯示上一頁(yè)的按鈕,并將預(yù)設(shè)的參數(shù)(數(shù)據(jù)篇數(shù)-RCOUNT、目前頁(yè)數(shù)-PAGE、搜索字符串-strSearchString)傳回%> <% If RCOUNT > 0 Then %>

      <%=strSearchString%>

      <% End If %>
      <%注:如果不是在最后一頁(yè)(rsResults.PageCount代表總頁(yè)數(shù))就顯示下一頁(yè)的按鈕,并將預(yù)設(shè)的參數(shù)(數(shù)據(jù)篇數(shù)-RCOUNT、目前頁(yè)數(shù)-PAGE、搜索字符串-strSearchString)傳回%> <% If PAGE = rsResults.PageCount Then %> <% Else %>

      <%=rsResults.PageCount%>

      <% End If %>
      <%End IF%> 完成以上步驟,一個(gè)簡(jiǎn)單的站內(nèi)搜索引擎就完成了,在網(wǎng)上顯示的介面如下圖: 
      此主題相關(guān)圖片如下:
       小結(jié): 由于這個(gè)搜索引擎主要是針對(duì)個(gè)人網(wǎng)站的資料作搜索,所以在設(shè)計(jì)上并不太難,與一般門(mén)戶(hù)網(wǎng)站的搜索引擎相比,其最大的差別就在于門(mén)戶(hù)網(wǎng)站的數(shù)據(jù)庫(kù)是以關(guān)聯(lián)性和層次性的資料型態(tài)存在,而我所介紹的這個(gè)搜索引擎僅僅只包含一個(gè)層次而已,不過(guò)對(duì)那些單純的內(nèi)容個(gè)人網(wǎng)站來(lái)說(shuō)卻已是綽綽有余了。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多