仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 435|回复: 7
打印 上一主题 下一主题

[学习教程] ASP教程之asp复杂的搜刮引擎代码

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧搜刮引擎上面是库中URLINDEX表:URL和Keywords字段分离增加了索引.
URL文本(索引:有(无反复))
Title文本
Description文本
Summary文本
Keywords文本(索引:有(无反复))
doquery.asp
<HTML><HEAD><TITLE>复杂搜刮引擎</TITLE></HEAD>
<BODYBGCOLOR=#ffffffMARGINWIDTH="0"MARGINHEIGHT="0"
LEFTMARGIN=0TOPMARGIN=0>
<FORMMETHOD="post"ACTION="doquery.asp?act=search">
Query:<INPUTTYPE="Text"NAME="QueryString"><BR>
<INPUTTYPE="Submit"VALUE="Submit">
</FORM>
</CENTER>

<%
dimact
act=request("act")
if(act="search")then
QueryString=Request.form("QueryString")
QueryWords=Split(QueryString)
strIndent=""

假如搜刮为空则前往
IfQueryString=""Then
Response.Redirect("default.asp")
EndIf

Session.timeout=2
IfIsObject(Session("sitesearch_conn"))Then
Setconn=Session("sitesearch_conn")
Else
Setconn=Server.CreateObject("ADODB.Connection")
conn.open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&Server.MapPath("database/SiteSearch.mdb"),"",""
SetSession("sitesearch_conn")=conn
EndIf
查询语句
sql="SELECT*FROM[URLIndex]WHERE"


搜刮Description字段
sql=sql&"([Description]LIKE%"&QueryWords(0)&"%"First
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)""andUCase(QueryWords(i))"OR"andUCase(QueryWords(i))"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Description]LIKE%"&QueryWords(i)&"%"
Else
sql=sql&"AND[Description]LIKE%"&QueryWords(i)&"%"
EndIf
EndIf
Next
搜刮Keywords字段
sql=sql&")OR([Keywords]LIKE%"&QueryWords(0)&"%"
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)""andUCase(QueryWords(i))"OR"andUCase(QueryWords(i))"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Keywords]LIKE%"&QueryWords(i)&"%"
Else
sql=sql&"AND[Keywords]LIKE%"&QueryWords(i)&"%"
EndIf
EndIf
Next

搜刮Title字段
sql=sql&")OR([Title]LIKE%"&QueryWords(0)&"%"
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)""andUCase(QueryWords(i))"OR"andUCase(QueryWords(i))"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Title]LIKE%"&QueryWords(i)&"%"
Else
sql=sql&"AND[Title]LIKE%"&QueryWords(i)&"%"
EndIf
EndIf
Next

搜刮Summary字段
sql=sql&")OR([Summary]LIKE%"&QueryWords(0)&"%"
Fori=LBound(QueryWords)+1toUBound(QueryWords)
IfQueryWords(i)""andUCase(QueryWords(i))"OR"andUCase(QueryWords(i))"AND"Then
IfuCase(QueryWords(i-1))="OR"Then
sql=sql&"OR[Summary]LIKE%"&QueryWords(i)&"%"
Else
sql=sql&"AND[Summary]LIKE%"&QueryWords(i)&"%"
EndIf
EndIf
Next
sql=sql&")"


Setrs=Server.CreateObject("ADODB.Recordset")
rs.Opensql,conn,3,3

Response.Write"<BR><B>你搜刮的是:</B>"&QueryString

Response.Write"<BR><B>搜刮的关头字:</B>"
Fori=LBound(QueryWords)toUBound(QueryWords)
Response.Write"<BR>"&strIndent&i&":"&QueryWords(i)
Next
PrinttheSQLString
Response.Write"<BR><B>sql语句:</B>"&sql

PrinttheResults
Response.Write"<BR><B>了局:</B><UL>"
OnErrorResumeNext
rs.MoveFirst
DoWhileNotrs.eof
Response.Write"<BR>"&"<AHREF=OpenPage.asp?IndexURL="&rs.Fields("URL").Value&">"&rs.Fields("Title")&"</A>-"
Response.Writers.Fields("Description")&"<BR>"
Response.Write"<FONTSIZE=2>URL:"&rs.Fields("URL")&"</FONT>"
Response.Write"<HRSIZE=1WIDTH=200ALIGN=LEFT>"
rs.MoveNext
Loop
Response.Write"</UL>"

endif
%>

</BODY>
</HTML>
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-18 23:02:23 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
兰色精灵 该用户已被删除
板凳
发表于 2015-1-25 23:48:47 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
再见西城 该用户已被删除
地板
发表于 2015-2-4 13:33:06 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
海妖 该用户已被删除
5#
发表于 2015-2-10 00:02:10 | 只看该作者
封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-28 10:12:21 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
谁可相欹 该用户已被删除
7#
发表于 2015-3-17 02:10:30 | 只看该作者
先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习
若相依 该用户已被删除
8#
发表于 2015-3-23 17:42:58 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 04:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表