用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 -->
<form name="frm_Search" method="get" action="Search.asp">
请输入关键字:
<input type="text" name="key" size="10">
<input type="submit" value="搜索">
</form>
下面,就进入了实现智能搜索的关键部分。
首先,建立数据库连接。在Search.asp的开始处加入如下代码:
以下是代码片段:
<%
Dim strProvider,CNN
strProvider="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
strProvider=strProvider & Server.MapPath("\") & "\data\db_Sample.mdb" 假设数据库存放在主页根目录下的data目录下
Set CNN = Server.CreateObject("ADODB.connection")
CNN.Open strProvider 打开数据库连接
%>
接下来,判断 ASP页所接收到的数据,并在数据库中进行搜索。
以下是代码片段:
<font color="#FF0000">未找到任何结果!!!</font>
<%
Else
%>
搜索名称为“<font color="#FF0000"><%= S_Key %></font>”的项,共找到 <font color="#FF0000"><%= RST.RecordCount %></font> 项:<p>
<%
While Not RST.EOF 遍历整个记录集,显示搜索到的信息并设置链接
%>
<!-- 此处可设为你所需要的链接目标 -->
<font style="font: 12pt 宋体"><a href="info.asp?ID=<%= RST("ID") %>" target="_blank"><%= RST("U_Name") %></a></font>
<!-- 显示部分详细内容 -->
<font style="font: 9pt 宋体"><%= Left(RST("U_Info"),150) %></font><p>
<%
RST.MoveNext
Wend
RST.Close
Set RST=Nothing
End If
End If
%>
在上面的代码中,有一个自定义函数 AutoKey ,该函数是实现智能搜索的核心所在。代码如下:
以下是代码片段:
<%
Function AutoKey(strKey)
CONST lngSubKey=2
Dim lngLenKey, strNew1, strNew2, i, strSubKey
’检测字符串的合法性,若不合法则转到出错页。出错页你可以根据需要进行设定。
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 若为空串,转到出错页
Response.Redirect "error.htm"
Case 1 若长度为1,则不设任何值
strNew1=""
strNew2=""
’Case Else 若长度大于1,则从字符串首字符开始,循环取长度为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
%>
要实现智能搜索,其核心就是将搜索关键字进行自动分组。在此处,我们使用了循环取长度为2的子串的方法。为什么不将子串长度定为1、3、4或其他呢?这是因为若子串长度小于2即为1时,会失去将关键字分组的功能,而若子串长度大于2,则会丢失一些词组。大家可以将 CONST lngSubKey=2改为其他数字试一试,孰优孰劣自见分晓。
最后,别忘了将数据连接关闭,以释放资源。
以下是代码片段:
<%
CNN.Close
Set CNN=Nothing
%>
至此,这个智能搜索引擎已经完成了。你还可以将其继续完善,比如添加分页、突出显示等功能。好了,不耽误大家时间了,赶快去试一试吧。
SEO工具、SEO教程、SEM教程、SEO培训、SEO优化、SEO服务、SEM服务等方面的资料,让大家掌握更多搜索引擎优化、网站优化等方面的知识。
关注者
博客归档
-
▼
2008
(128)
-
▼
十一月
(127)
- 导致网站进沙盒的真正原因
- 单向链接对SEO意义和价值
- 网页title长度解密
- 淘宝网robots.txt拒绝百度蜘蛛抓取,抵制百度
- 中搜对百度采取屏蔽措施
- JavaScript对SEO的影响和处理办法
- 百度召开紧急会议应对央视“曝光门”
- 百度受央视曝光影响周一股价大跌25%
- 关键字“小事”做到百度排名第一的
- SEO实际运用-网站编辑
- 黑帽SEO是什么?
- SEO探索-seo与网站结构的关系
- 从SEO原则看网站优化
- 不用 SEO取得成功的10个步骤
- 百度排名NO.1是怎样SEO成功的?
- 搜索引擎如何给你的网站内容打分
- 网站建设中标题和页面描述的撰写技巧
- 三年站长生涯收入80万的实战总结
- 长尾搜索可能比预料得还要长
- 网站关键字热门与时效性的测试
- 巧用seo获得上万流量的技巧
- 谈谈国外网站赚钱的要诀
- 百度图片SEO:让流量在翻番
- Site网址首页不在第一位的原因
- 有效增加反向链接的5个方法
- 告诉你24种提高网站关键字排名的SEO技巧
- 有利于网站排名的设计建议
- seoer你该怎么学习你的竞争对手?!
- 超强外链提高pr资源共享!
- 10种在SEO之外获得网站流量的方式(译)
- 最权威的Google排名算法解密
- 卖什么又省心又容易赚钱
- 网站赚钱就靠广告行不行?
- 网站美观重要还是实用重要?
- 中文网站设计通病
- SEO难学的那部分
- 从SEO角度看网站重新设计
- 复制内容网页是怎样形成的?
- 搜索引擎统一Robots文件标准
- 用户体验与SEO
- robots.txt详细介绍
- SEO作弊的含义与常见方式
- 强势推出“评测网站的十个指标”
- Google官方针对网站SEO的建议
- 搜索引擎中文分词技术
- 如何避免中小企业提升网络营销成功率五大误区
- 网络营销相对传统营销有哪些优势?
- 为什么要建立网站地图?
- 网站被百度K了怎么办?
- 搜索引擎排名算法中必不可少的要素
- 揭秘影响Google排名的主要因素
- 中国SEO的前景如何?
- 什么是反向链接?
- Google优化圣经
- 搜索引擎排名算法中必不可少的要素
- 怎样为有内容的网站创建良好的用户体验?
- SEO优化的主要环节和步骤包括哪些方面?
- 网站更换新域名,怎样才不会影响原有排名?
- 网站排名下降的主要原因
- 搜索引擎对网站重复内容的看法及建议
- 链接架构的重要性
- 常见的SEO术语
- 目前最完美解决QQ卸载彩虹的方法
- 服务器对网站排名的影响
- .NET语言的选择
- .Net的精髓-XML和SOAP
- ASP.Net的几大热点问题
- Windows.NET Server: 远程访问
- 技术分析:.NET的优势与劣势
- 微软下一代网络服务器IIS7前瞻
- 代码大战:哪种语言会赢得开发的霸权?
- 技术分析:.NET的优势与劣势
- 用不着妄自菲薄 对ASP和ASP程序员的一些话
- 从本质上看网页(asp,jsp)的编写
- 一个用ASP生成html的新方法
- 一个基于web的QQ程序 2(xml+asp)
- PHP5的 SPL
- 连续正整数 算法实现
- 深入学习memcached
- php在apache中安装模式的区别:fastcgi和mod_php
- PHP与WEB服务工作的三种方式
- 深入PHP编译缓存
- 编译PHP手册的新办法
- 用于解决PHP 命名空间分隔符输入问题的USB设备
- 再论代码之美——PHP实战
- php 时间差8小时解决
- 自动编码转换
- ThinkPHP安全体系-委托认证和决策访问和RBAC
- 从URL路由、空操作和空模块看ThinkPHP对SEO的支持
- 模型自动验证和处理
- 多数据库支持
- 值得关注的ThinkPHP特性2:分布式数据库支持
- 讲解一个经过高手优化的MySQL数据库实例
- ASP实现网站智能分词搜索
- 编写简单的中文分词程序
- 中文分词搜索,asp拆词搜索,asp智能分词搜索
- 用存储过程实现删除数据表的部分记录
- MySQL存储过程SAVEPOINT ROLLBACK to
- 用一个存储过程实现分步删除数据表记录
- DB2数据库创建存储过程时遇到的错误现象
-
▼
十一月
(127)
没有评论:
发表评论