国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > ASP > 正文

如何實(shí)現(xiàn)智能搜索

2024-05-04 11:05:06
字體:
供稿:網(wǎng)友

使用ASP實(shí)現(xiàn)搜索引擎的功能非常方便,但是如何實(shí)現(xiàn)智能搜索呢?在閱讀本文之后,您會(huì)發(fā)現(xiàn)這個(gè)其實(shí)實(shí)現(xiàn)這個(gè)功能是非常簡(jiǎn)單的,下面就跟著錯(cuò)新技術(shù)頻道小編的步伐來了解吧!

ASP智能搜索的實(shí)現(xiàn)步驟
????第一步,我們要建立一個(gè)名為db_sample.mdb的數(shù)據(jù)庫(kù)(本文以Access2000數(shù)
據(jù)庫(kù)為例),并在其中建立表T_Sample。表T_Sample包括如下字段:
????????ID????????????自動(dòng)編號(hào)
????????U_Name????文本
????????U_Info??????備注
????第二步,我們開始設(shè)計(jì)搜索頁(yè)面Search.asp。該頁(yè)面包括一個(gè)表單
(Frm_Search),表單內(nèi)包括一個(gè)文本框和一個(gè)提交按鈕。并將表單的method屬
性設(shè)為“get”?,action屬性設(shè)為“Search.asp",即提交給網(wǎng)頁(yè)自身。代碼如下

????
????
???????請(qǐng)輸入關(guān)鍵字:?
???????
???????
????
????下面,就進(jìn)入了實(shí)現(xiàn)智能搜索的關(guān)鍵部分。
????首先,建立數(shù)據(jù)庫(kù)連接。在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ù)庫(kù)存放在主頁(yè)根目錄下的data目錄下
????????Set?CNN?=?Server.CreateObject("ADODB.connection")
????????CNN.Open?strProvider??'打開數(shù)據(jù)庫(kù)連接
????%>
????接下來,判斷?ASP頁(yè)所接收到的數(shù)據(jù),并在數(shù)據(jù)庫(kù)中進(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
????%>
????????????????未找到任何結(jié)果!?。?
????<%
????????????????Else
????%>
????????????????????搜索名稱為“<%=?S_Key?%
>”的項(xiàng),共找到?<%=?RST.RecordCount?%
>?項(xiàng):


????<%
????????????????????While?Not?RST.EOF???'遍歷整個(gè)記錄集,顯示搜索到的信
息并設(shè)置鏈接
????%>
????????????????????????
????????????????????????href="info.asp?ID=<%=?RST("ID")?%>"?target="_blank"><%=?RST("U_Name")?
%>
??
????????????????????????
????????????????????????<%=?Left(RST
("U_Info"),150)?%>
?>

??
????<%
????????????????????????RST.MoveNext
????????????????????Wend
????????????????????RST.Close
????????????????????Set?RST=Nothing
????????????End?If
????????End?If
????%>
????在上面的代碼中,有一個(gè)自定義函數(shù)?AutoKey?,該函數(shù)是實(shí)現(xiàn)智能搜索的核
心所在。代碼如下:
????<%
????Function?AutoKey(strKey)
????????CONST?lngSubKey=2
????????Dim?lngLenKey,?strNew1,?strNew2,?i,?strSubKey

????????'檢測(cè)字符串的合法性,若不合法則轉(zhuǎn)到出錯(cuò)頁(yè)。出錯(cuò)頁(yè)你可以根據(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)到出錯(cuò)頁(yè)
????????????????Response.Redirect?"error.htm"??
????????????Case?1???'若長(zhǎng)度為1,則不設(shè)任何值
????????????????strNew1=""
????????????????strNew2=""
????????????Case?Else??'若長(zhǎng)度大于1,則從字符串首字符開始,循環(huán)取長(zhǎng)度為
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)行自動(dòng)分組。在此處,我們使
用了循環(huán)取長(zhǎng)度為2的子串的方法。為什么不將子串長(zhǎng)度定為1、3、4或其他呢?
這是因?yàn)槿糇哟L(zhǎng)度小于2即為1時(shí),會(huì)失去將關(guān)鍵字分組的功能,而若子串長(zhǎng)度
大于2,則會(huì)丟失一些詞組。大家可以將?CONST?lngSubKey=2改為其他數(shù)字試一試
,孰優(yōu)孰劣自見分曉。
????最后,別忘了將數(shù)據(jù)連接關(guān)閉,以釋放資源。
????<%
????????CNN.Close
????????Set?CNN=Nothing
????%>
??以上就是如何實(shí)現(xiàn)智能搜索,更多技術(shù)知識(shí)請(qǐng)繼續(xù)關(guān)注錯(cuò)新技術(shù)頻道!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 砀山县| 龙游县| 开原市| 民权县| 留坝县| 易门县| 洛阳市| 衡东县| 尤溪县| 新巴尔虎右旗| 东兴市| 金堂县| 承德市| 连江县| 随州市| 湖北省| 乌拉特前旗| 永嘉县| 松原市| 桃园县| 拉萨市| 新干县| 微博| 项城市| 北辰区| 四平市| 航空| 清原| 南溪县| 咸阳市| 长子县| 新竹市| 方城县| 宁陵县| 安溪县| 华池县| 谷城县| 夏邑县| 蕲春县| 新蔡县| 苍溪县|