用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,CNNstrProvider="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.MoveNextWendRST.CloseSet RST=NothingEnd IfEnd If%>

  在上面的代码中,有一个自定义函数 AutoKey ,该函数是实现智能搜索的核心所在。代码如下:

  以下是代码片段:  

<%Function AutoKey(strKey)CONST lngSubKey=2Dim 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 thenResponse.Redirect "error.htm"End IflngLenKey=Len(strKey)Select Case lngLenKeyCase 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 & "%"NextEnd Select’得到完整的SQL语句AutoKey="Select * from T_Sample where U_Name like %" & strKey & "% or U_Info like %" & strKey & "%" & strNew1 & strNew2End Function%>

  要实现智能搜索,其核心就是将搜索关键字进行自动分组。在此处,我们使用了循环取长度为2的子串的方法。为什么不将子串长度定为1、3、4或其他呢?这是因为若子串长度小于2即为1时,会失去将关键字分组的功能,而若子串长度大于2,则会丢失一些词组。大家可以将 CONST lngSubKey=2改为其他数字试一试,孰优孰劣自见分晓。

  最后,别忘了将数据连接关闭,以释放资源。

  以下是代码片段:

  <%CNN.CloseSet CNN=Nothing%>

  至此,这个智能搜索引擎已经完成了。你还可以将其继续完善,比如添加分页、突出显示等功能。好了,不耽误大家时间了,赶快去试一试吧。

ASP实现网站智能分词搜索相关推荐

  1. 新功能 | 智能开放搜索上线定制分词器

    NLP算法在搜索链路中的应用 这是一个完整的从查询词到搜索结果的链路,其中自然语言处理(NLP)算法发挥作用的地方主要在第二阶段的查询分析,该阶段包含多个NLP算法模块,如分词.纠错.实体识别.词权重 ...

  2. 智能开放搜索上线定制分词器

    简介:智能开放搜索上线定制召回模型-定制分词器功能,满足各行业.垂类.业务特殊,对搜索有较高分词要求的客户,提升语义理解能力,精准召回用户搜索意图. NLP算法在搜索链路中的应用 这是一个完整的从查询 ...

  3. [SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap

    首先我要说明:Asp.Net内置的Sitemap与这里讲的Sitemap是完全不同的,Asp.Net中的Sitemap主要用于给用户导航,而这里说的Sitemap是用来给搜索引擎爬虫指路. 还是直接来 ...

  4. 让机器帮你做决策!强化学习在智能交互搜索的应用分享...

    小叽导读:在时间就是金钱的时代,降低搜索时间成本,迅速找到目标产品具有重要意义.如今的电商平台已不仅仅是一个摆放商品的货架,"智能推荐"成为电商的一个重要功能.今天,我们来看看强化 ...

  5. 让机器帮你做决策!强化学习在智能交互搜索的应用分享

    小叽导读:在时间就是金钱的时代,降低搜索时间成本,迅速找到目标产品具有重要意义.如今的电商平台已不仅仅是一个摆放商品的货架,"智能推荐"成为电商的一个重要功能.今天,我们来看看强化 ...

  6. 实现 ASP.NET 网站地图提供者

    ASP.NET 网站导航提供若干 Web 服务器控件用于 Web 页面中导航结构的显示:SiteMapPath,TreeView,和 Menu 控件.这些 Web 服务器控件都使用 ASP.NET 默 ...

  7. php 搜索名称或者编号,ECSHOP商品关键词模糊分词搜索插件,商品列表关键字加红功能-ecshop插件网...

    最近给客户做一个ECSHOP商城,发现ECSHOP的模糊搜索要求太高,需要加入and.空格.加号等,客户搜索的时候不可能这样操作. 考虑到工期的问题,采用了织梦的分词算法,搜索效果虽然不是特别理想,但 ...

  8. 正确设置asp.net网站的404错误页面

    从网上搜索asp.net网站如何自定义404错误页面时,大多数文章都是告诉你: 在web.config中,找到system.web,配置以下内容即可. <customErrors mode=&q ...

  9. ASP.NET网站还是ASP.NET Web应用程序?

    当我在Visual Studio中启动新的ASP.NET项目时,可以创建一个ASP.NET Web应用程序,也可以创建一个ASP.NET网站. ASP.NET Web应用程序和ASP.NET网站之间有 ...

最新文章

  1. 移动端web设计尺寸_移动端页面设计规范尺寸大起底
  2. 在一个IIS上同时运行两个版本ASP.NET报错的
  3. 2017年,软件开发全过程,描述得不能再详细了
  4. data.name.toLowerCase() is not a function问题
  5. 查看mysql某人执行了什么语句_详解MySQL如何监控系统全部执行过的sql语句
  6. HTML代码示例和介绍
  7. coon's patch
  8. 淘宝刷DSR动态评分技巧
  9. 深入解析Scheduler
  10. 给仍在「 选品 」的跨境卖家提个醒!
  11. 桌面虚拟化中RDS、VDI、IDV、VOI主流的云桌面技术比较
  12. 什么是漏极开路【转】
  13. js当前日期倒推,向前倒推或往后推算
  14. 创建Hive外部表,关联HDFS文件
  15. 软件工程师的核心竞争力(学习能力,解决问题的能力,影响力)
  16. TEMPDB空间已满
  17. pandas的loc[ ]和iloc[ ]方法解析
  18. RTSP协议详解与实时流视频预览-第6/11季视频课程-海思-朱有鹏-专题视频课程
  19. J-link v8重刷固件(win7,win8.1,win10)
  20. 数据链路层----交换机原理

热门文章

  1. #*nginx: [warn] conflicting server name “localhost“ on 0.0.0.0:80, ignored
  2. Error: No such container:path: 630f5b9a1a00d26975cd4fda3464af0829bbfb1f21c1e30238fec7c11eed609d:/var
  3. 自定义边框的制作与换色(canvas与css3)
  4. 基于python的投票系统论文_在线投票系统 毕业论文设计
  5. 使用STM32L053探索板上的IDD电流检测功能
  6. 不掉帧不卡顿的游戏直播画面看起来爽爆了,求网络推流搭建方案
  7. Android特效专辑(一)——水波纹过渡特效(首页)
  8. B2029 大象喝水题解
  9. 本周大新闻|传苹果MR开发样机已送出,比尔盖茨:不太看好Web3和元宇宙
  10. aes加密 java_Java中的微信支付(2):API V3 微信平台证书的获取与刷新