|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。用ASP完成搜刮引擎的功效是一件很便利的事,但是,怎样完成相似3721的智能搜刮呢?好比,当在搜刮前提框内输出“中国国民”时,主动从中提取“中国”、“国民”等关头字并在数据库内举行搜刮。看完本文后,你就能够发明,这个功效完成起来居然是云云的复杂。用ASP完成搜刮引擎的功效是一件很便利的事,但是,怎样完成相似3721的智能搜刮呢?好比,当在搜刮前提框内输出“中国国民”时,主动从中提取“中国”、“国民”等关头字并在数据库内举行搜刮。看完本文后,你就能够发明,这个功效完成起来居然是云云的复杂。
第一步,我们要创建一个名为db_sample.mdb的数据库(本文以Access2000数据库为例),并在个中创建表T_Sample。表T_Sample包含以下字段:
ID主动编号
U_Name文本
U_Info备注
第二步,我们入手下手计划搜刮页面Search.asp。该页面包含一个表单(Frm_Search),表单内包含一个文本框和一个提交按钮。并将表单的method属性设为“get”,action属性设为“Search.asp",即提交给网页本身。代码以下:
以下是代码片断:
<!--Search.asp-->
<formname="frm_Search"method="get"action="Search.asp">
请输出关头字:
<inputtype="text"name="key"size="10">
<inputtype="submit"value="搜刮">
</form>
上面,就进进了完成智能搜刮的关头部分。
起首,创建数据库毗连。在Search.asp的入手下手处到场以下代码:
以下是代码片断:
<%
DimstrProvider,CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="
strProvider=strProvider&Server.MapPath("")&"datadb_Sample.mdb"假定数据库寄存在主页根目次下的data目次下
SetCNN=Server.CreateObject("ADODB.connection")
CNN.OpenstrProvider翻开数据库毗连
%>
接上去,判别ASP页所吸收到的数据,并在数据库中举行搜刮。
以下是代码片断:
<fontcolor="#FF0000">未找就任何了局!!!</font>
<%
Else
%>
搜刮称号为“<fontcolor="#FF0000"><%=S_Key%></font>”的项,共找到<fontcolor="#FF0000"><%=RST.RecordCount%></font>项:<p>
<%
WhileNotRST.EOF遍历全部纪录集,显现搜刮到的信息并设置链接
%>
<!--此处可设为你所必要的链接方针-->
<fontstyle="font:12pt宋体"><ahref="info.asp?ID=<%=RST("ID")%>"target="_blank"><%=RST("U_Name")%></a></font>
<!--显现部分具体内容-->
<fontstyle="font:9pt宋体"><%=Left(RST("U_Info"),150)%></font><p>
<%
RST.MoveNext
Wend
RST.Close
SetRST=Nothing
EndIf
EndIf
%>
在下面的代码中,有一个自界说函数AutoKey,该函数是完成智能搜刮的中心地点。代码以下:
以下是代码片断:
<%
FunctionAutoKey(strKey)
CONSTlngSubKey=2
DimlngLenKey,strNew1,strNew2,i,strSubKey
’检拆字符串的正当性,若分歧法例转到堕落页。堕落页你能够依据必要举行设定。
ifInStr(strKey,"=")<>0orInStr(strKey,"`")<>0orInStr(strKey,"")<>0orInStr(strKey,"")<>0orInStr(strKey," ")<>0orInStr(strKey,"")<>0orInStr(strKey,chr(34))<>0orInStr(strKey,"")<>0orInStr(strKey,",")<>0orInStr(strKey,"<")<>0orInStr(strKey,">")<>0then
Response.Redirect"error.htm"
EndIf
lngLenKey=Len(strKey)
SelectCaselngLenKey
Case0若为空串,转到堕落页
Response.Redirect"error.htm"
Case1若长度为1,则不设任何值
strNew1=""
strNew2=""
’CaseElse若长度年夜于1,则从字符串首字符入手下手,轮回取长度为2的子字符串作为查询前提
Fori=1TolngLenKey-(lngSubKey-1)
strSubKey=Mid(strKey,i,lngSubKey)
strNew1=strNew1&"orU_Namelike%"&strSubKey&"%"
strNew2=strNew2&"orU_Infolike%"&strSubKey&"%"
Next
EndSelect
’失掉完全的SQL语句
AutoKey="Select*fromT_SamplewhereU_Namelike%"&strKey&"%orU_Infolike%"&strKey&"%"&strNew1&strNew2
EndFunction
%>
要完成智能搜刮,其中心就是将搜刮关头字举行主动分组。在此处,我们利用了轮回取长度为2的子串的办法。为何不将子串长度定为1、3、4或其他呢?这是由于若子串长度小于2即为1时,会得到将关头字分组的功效,而若子串长度年夜于2,则会丧失一些词组。人人能够将CONSTlngSubKey=2改成其他数字试一试,孰优孰劣自见分晓。
最初,别忘了将数据毗连封闭,以开释资本。
以下是代码片断:
<%
CNN.Close
SetCNN=Nothing
%>
至此,这个智能搜刮引擎已完成了。你还能够将其持续完美,好比增加分页、凸起显现等功效。好了,不延误人人工夫了,从速往试一试吧。
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码 |
|