精灵巫婆 发表于 2015-1-16 22:05:25

ASP教程之ASP完成网站智能分词搜刮

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还有什么网站等等的源代码

变相怪杰 发表于 2015-1-18 20:17:12

在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。

活着的死人 发表于 2015-1-27 20:35:50

我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。

透明 发表于 2015-2-5 15:08:57

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

老尸 发表于 2015-3-3 03:45:41

ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。

仓酷云 发表于 2015-3-11 09:49:37

以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。

再现理想 发表于 2015-3-18 08:33:29

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

蒙在股里 发表于 2015-3-25 19:40:28

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
页: [1]
查看完整版本: ASP教程之ASP完成网站智能分词搜刮