ASP实现类似 搜索引擎的 分词

用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  
%>

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

时间: 2024-10-29 21:01:59

ASP实现类似 搜索引擎的 分词的相关文章

用asp编写类似搜索引擎功能的代码

首先建一个access 数据库,库中有一个URLINDEX表,其中URL和Keywords字段分别添加了索引,如下:   URL             文本 (索引:有(无重复)) Title            文本 Description 文本 Summary    文本 Keywords   文本(索引:有(无重复)) 程序文件doquery.asp,代码: <HTML><HEAD><TITLE>简单搜索引擎</TITLE></HEAD>

如何使用ASP制作类似安装向导的页面?

安装向导|页面|安装向导 如何使用ASP制作类似安装向导的页面?面临的主要问题何在:1.界面和一个Windows Wizard完全一样,有Next和Back按钮2.用户可以使用Back按钮回到以前的任何一步,并且能够改变以前任何一步中已经选择的内容3.form必须记住所有填入的内容4.不能够使用数据库5.不能够使用Sessions,防止如果Sessiosn失效后用户的所有输入丢失,不幸的是,也不能够使用cookie因为很多拥护经常关掉浏览器的Cookie选项.6.可移植性要好,因为它要适应安装步

mfc初学者,想做一个基于对话框的类似搜索引擎的程序,有没有功能相近源代码借鉴一下

问题描述 mfc初学者,想做一个基于对话框的类似搜索引擎的程序,有没有功能相近源代码借鉴一下 关于注册时的用户名密码怎么存啊,数据库怎么用啊,搜索的文件放哪啊等等问题,不胜感激 解决方案 最简单的是嵌入一个webbrowser控件,链接到网站上. 解决方案二: 建议楼主先参考书籍去MFC 体验一下控件的使用和相关响应函数的编写吧,先动手操作再想思路 解决方案三: 先学好基础再想做实际程序,数据库怎么用这些不是一两句话能说清楚的

哪位大侠赐我asp+access 类似企业网站的的源代码含数据库的

问题描述 哪位大侠赐我asp+access类似企业网站的的源代码含数据库的直接能使用的哦,是开源的,本人主要用于单位新闻发布和管理,最好有后台的 解决方案 解决方案二:我有怎么给你?解决方案三:麻烦发我邮箱1250357852@qq.com,急,万分感谢解决方案四:发送到1250357852@qq.com解决方案五:发送到1250357852@qq.com解决方案六:在网上有连接地址:http://www.mycodes.net/30/3531.htm解决方案七:不用客气,随便挑解决方案八:不是

浅述搜索引擎的分词算法 了解全文检索技术

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 21世纪互联网的快速发展让人们生活越来越便利,当日益剧增的海量信息让我们眼花缭乱时,搜索引擎的出现可以让我们快速找到自己想要的答案.因此多了解搜索引擎的分词算法,可以让网站在搜索引擎上获得更好的展现机会.在讲解中文分词技术之前,先来了解下全文检索技术. 全文检索技术 全文检索是指索引程序扫描文章中的每个词并建立对应索引,记录该词出现的位置和次

asp简单的搜索引擎代码

搜索引擎 下面是库中URLINDEX表:URL和Keywords字段分别添加了索引.  URL           文本 (索引:有(无重复))Title            文本Description 文本Summary    文本Keywords   文本(索引:有(无重复)) doquery.asp  <HTML><HEAD><TITLE>简单搜索引擎</TITLE></HEAD><BODY BGCOLOR=#ffffff MARG

asp.net2统一搜索引擎关键字编码

View二期开发正式启动,一开始就碰到了麻烦事,因为在统计模块中,需要得到来源搜索链接的关键字,所以一开始就用正则把关键字部分匹配出来,然后用自带的 Uri.UnescapeDataString() 将Urlcoding转换为文字. 本来一切都很顺利,结果将百度,网易搜索加到规则里面,就开始报错了.我猜想可能是和编码有关系,因为Google一向都是UTF-8,国内的网站大多偏向使用GB2312,所以出现这个问题我还不是很担心. 哪里知道,这个问题的严重性,让我差点对程序算法的研究失去信心.因为今

asp中利用CSW中文分词组件来实现自己网站的内容关键词自动提取_应用技巧

比如标题是:腾讯QQ 2006 珊瑚虫集成版 v4.5b 分词后:[此资源关键词:腾讯 QQ 珊瑚虫 集成 ] 并且把关键词做成专题,可以为每个内容页面生成相关连接了 用CSW中文分词组件 下载:http://www.vgoogle.net/Product_CSW.asp 下面是我的ASP代码,比较粗浅,但实用 codecsw 得到输出的所有分词结果,用它的组建里面有个ASP文件,你一看就知道怎么得到分词结果了,这个不详细说了. 复制代码 代码如下: fcon=split(htm," "

Asp.Net、asp实现的搜索引擎网址收录检查程序_实用技巧

使用asp.net或者asp检查某个url地址,某篇文章是否被搜索引擎,如百度,谷歌,搜狗收录. 实现原理:直接搜索你那篇文章的url地址(不带协议,但上协议也行,代码会自动去掉协议内容),如果被索引会返回搜索结果,否则会提示找不到信息. Asp.Net检查百度,谷歌,搜狗搜索引擎是否收录文章网址源代码: using System; using System.Net; using System.Text; using System.IO; using System.Web; public cla