成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當(dāng)前位置:首頁>>開發(fā)編程>>ASP>>新聞內(nèi)容
ASP智能搜索的實(shí)現(xiàn)
作者: 發(fā)布時間:2003-10-7 14:39:06 文章來源:
  用ASP實(shí)現(xiàn)搜索引擎的功能是一件很方便的事,可是,如何實(shí)現(xiàn)類似3721的智能搜索呢?比如,當(dāng)在搜索條件框內(nèi)輸入“中國人民”時,自動從中提取“中國”、“人民”等關(guān)鍵字并在數(shù)據(jù)庫內(nèi)進(jìn)行搜索。看完本文后,你就可以發(fā)現(xiàn),這個功能實(shí)現(xiàn)起來竟然是如此的簡單。OK,F(xiàn)ollow Me!
  第一步,我們要建立一個名為db_sample.mdb的數(shù)據(jù)庫(本文以Access2000數(shù)據(jù)庫為例),并在其中建立表T_Sample。表T_Sample包括如下字段:
    ID      自動編號
    U_Name  文本
    U_Info   備注
  第二步,我們開始設(shè)計(jì)搜索頁面Search.asp。該頁面包括一個表單(Frm_Search),表單內(nèi)包括一個文本框和一個提交按鈕。并將表單的method屬性設(shè)為“get” ,action屬性設(shè)為“Search.asp",即提交給網(wǎng)頁自身。代碼如下:
  <!-- Search.asp -->
  <form name="frm_Search" method="get" action="Search.asp">
    請輸入關(guān)鍵字:
    <input type="text" name="key" size="10">
    <input type="submit" value="搜索">
  </form>
  下面,就進(jìn)入了實(shí)現(xiàn)智能搜索的關(guān)鍵部分。
  首先,建立數(shù)據(jù)庫連接。在Search.asp的開始處加入如下代碼:
  <%
  Dim strProvider,CNN
    strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    strProvider=strProvider & Server.MapPath("\") & "\data\db_Sample.mdb" ’假設(shè)數(shù)據(jù)庫存放在主頁根目錄下的data目錄下
    Set CNN = Server.CreateObject("ADODB.connection")
    CNN.Open strProvider ’打開數(shù)據(jù)庫連接
  %>
  接下來,判斷 ASP頁所接收到的數(shù)據(jù),并在數(shù)據(jù)庫中進(jìn)行搜索。
  <%
  Dim S_Key,RST,StrSQL
    S_Key = Trim(Request("key"))  ’得到搜索關(guān)鍵字的值
    If S_Key <>"" then
      Set RST=Server.CreateObject("ADODB.RecordSet")
      StrSQL=AutoKey(S_Key) ’此處使用自定義函數(shù) AutoKey(),該函數(shù)為實(shí)現(xiàn)智能搜索的核心
      RST.Open StrSQL,CNN,3,2 ’得到搜索后的記錄
 
      If RST.BOF And RST.EOF Then
  %>
        <font color="#FF0000">未找到任何結(jié)果!!!</font>
  <%
        Else
  %>
          搜索名稱為“<font color="#FF0000"><%= S_Key %></font>”的項(xiàng),共找到 <font color="#FF0000"><%= RST.RecordCount %></font> 項(xiàng):<p>
  <%
          While Not RST.EOF  ’遍歷整個記錄集,顯示搜索到的信息并設(shè)置鏈接
  %>
            <!-- 此處可設(shè)為你所需要的鏈接目標(biāo) -->
            <font style="font: 12pt 宋體"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") %></a></font><br> 
            <!-- 顯示部分詳細(xì)內(nèi)容 -->
            <font style="font: 9pt 宋體"><%= Left(RST("U_Info"),150) %></font><p> 
  <%
            RST.MoveNext
          Wend
          RST.Close
          Set RST=Nothing
      End If
    End If
  %>
  在上面的代碼中,有一個自定義函數(shù) AutoKey ,該函數(shù)是實(shí)現(xiàn)智能搜索的核心所在。代碼如下:
  <%
  Function AutoKey(strKey)
    CONST lngSubKey=2
    Dim lngLenKey, strNew1, strNew2, i, strSubKey

    ’檢測字符串的合法性,若不合法則轉(zhuǎn)到出錯頁。出錯頁你可以根據(jù)需要進(jìn)行設(shè)定。
    if InStr(strKey,"=")<>0 or InStr(strKey,"`")<>0 or InStr(strKey,"’")<>0 or InStr(strKey," ")<>0 or InStr(strKey," ")<>0 or InStr(strKey,"’")<>0 or InStr(strKey,chr(34))<>0 or InStr(strKey,"\")<>0 or InStr(strKey,",")<>0 or InStr(strKey,"<")<>0 or InStr(strKey,">")<>0 then
      Response.Redirect "error.htm"
    End If

    lngLenKey=Len(strKey)
    Select Case lngLenKey
      Case 0  ’若為空串,轉(zhuǎn)到出錯頁
        Response.Redirect "error.htm" 
      Case 1  ’若長度為1,則不設(shè)任何值
        strNew1=""
        strNew2=""
      Case Else ’若長度大于1,則從字符串首字符開始,循環(huán)取長度為2的子字符串作為查詢條件
        For i=1 To lngLenKey-(lngSubKey-1)
          strSubKey=Mid(strKey,i,lngSubKey)
          strNew1=strNew1 & " or U_Name like ’%" & strSubKey & "%’"
          strNew2=strNew2 & " or U_Info like ’%" & strSubKey & "%’"
        Next
    End Select

    ’得到完整的SQL語句
    AutoKey="Select * from T_Sample where U_Name like ’%" & strKey & "%’ or U_Info like ’%" & strKey & "%’" & strNew1 & strNew2

  End Function
  %>
  要實(shí)現(xiàn)智能搜索,其核心就是將搜索關(guān)鍵字進(jìn)行自動分組。在此處,我們使用了循環(huán)取長度為2的子串的方法。為什么不將子串長度定為1、3、4或其他呢?這是因?yàn)槿糇哟L度小于2即為1時,會失去將關(guān)鍵字分組的功能,而若子串長度大于2,則會丟失一些詞組。大家可以將 CONST lngSubKey=2改為其他數(shù)字試一試,孰優(yōu)孰劣自見分曉。
  最后,別忘了將數(shù)據(jù)連接關(guān)閉,以釋放資源。
  <%
    CNN.Close
    Set CNN=Nothing
  %>
  至此,這個智能搜索引擎已經(jīng)完成了。你還可以將其繼續(xù)完善,比如添加分頁、突出顯示等功能。好了,不耽誤大家時間了,趕快去試一試吧。 ^_^

最新更新
·數(shù)據(jù)庫被掛馬的ASP處理方法
·ASP快速獲取遠(yuǎn)程文件大小的方
·用ASP屏蔽迅雷和旋風(fēng)下載工具
·解決ASP中傳送中文參數(shù)亂碼的
·ASP+AJAX做類似Google的搜索
·ASP的一個非常棒的Debug類(
·ASP中常用的服務(wù)器檢測源代碼
·優(yōu)化ASP中執(zhí)行SQL效率的五個
·ASP種msxml3.dll 800c0005錯
·掛QQ的ASP版本網(wǎng)頁源代碼
相關(guān)信息
·實(shí)現(xiàn)搜索結(jié)果的關(guān)鍵詞變色標(biāo)注的程序
放生
愚愛
夠愛
觸電
白狐
心跳
知足
犯錯
降臨
分愛
葬愛
光榮
畫心
火花
稻香
愛得起
這種愛
大丈夫
花蝴蝶
二缺一
小酒窩
下雨天
右手邊
安靜了
棉花糖
明天過后
邊做邊愛
擦肩而過
沒有如果
懷念過去
等一分鐘
越來越愛
寂寞暴走
你的承諾
Nobody
我們都一樣
永遠(yuǎn)在身邊
天使的翅膀
原諒我一次
i miss you
原諒我一次
吻的太逼真
姑娘我愛你
做你的愛人
一定要愛你
飛向別人的床
愛上別人的人
感動天感動地
心在跳情在燒
不潮不用花錢
如何能把你忘記
即使知道要見面
愛上你是一個錯
最后一次的溫柔
愛上你是我的錯
怎么會狠心傷害我
親愛的那不是愛情
傷心時候可以聽情歌
愛上你等于愛上了錯
不是因?yàn)榧拍畔肽?/a>
主站蜘蛛池模板: 平南县| 内乡县| 阿拉善左旗| 芦山县| 兴海县| 东莞市| 敦化市| 板桥市| 仙游县| 洪湖市| 峨山| 平潭县| 大丰市| 蛟河市| 丰镇市| 离岛区| 罗定市| 专栏| 渝北区| 昌邑市| 文安县| 博兴县| 富平县| 吉林市| 黄平县| 安泽县| 黑龙江省| 梁平县| 甘孜县| 稻城县| 富民县| 临猗县| 法库县| 琼中| 承德县| 丘北县| 巧家县| 招远市| 吐鲁番市| 若尔盖县| 南乐县|