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

首先建一个access 数据库,库中有一个URLINDEX表,其中URL和Keywords字段分别添加了索引,如下:
 

URL             文本 (索引:有(无重复))
Title            文本
Description 文本
Summary    文本
Keywords   文本(索引:有(无重复)) 程序文件doquery.asp,代码:
<HTML><HEAD><TITLE>简单搜索引擎</TITLE></HEAD>
<BODY BGCOLOR=#ffffff MARGINWIDTH="0" MARGINHEIGHT="0" 
LEFTMARGIN=0 TOPMARGIN=0> 
<FORM METHOD="post" ACTION="doquery.asp?act=search">
 Query: <INPUT TYPE="Text" NAME="QueryString"><BR>
 <INPUT TYPE="Submit" VALUE="Submit">
</FORM>
</CENTER>

<%
dim act
act=request("act")
if(act="search") then
 QueryString = Request.form( "QueryString" )
 QueryWords  = Split( QueryString )
 strIndent   = "          "
 
 ’ 如果搜索为空则返回
 If QueryString = "" Then
  Response.Redirect( "default.asp" )
 End If
 
 Session.timeout = 2
 If IsObject(Session("sitesearch_conn")) Then
     Set conn = Session("sitesearch_conn")
 Else
     Set conn = Server.CreateObject("ADODB.Connection")
     conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("database/SiteSearch.mdb"),"",""
     Set Session("sitesearch_conn") = conn
 End If

 ’ 查询语句
 sql = "SELECT * FROM [URLIndex] WHERE" 
     
 ’搜索Description字段
 sql = sql & " ( [Description] LIKE ’%" & QueryWords( 0 ) & "%’"   ’ First
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
   If uCase( QueryWords( i-1 ) ) = "OR" Then
    sql = sql & " OR [Description] LIKE ’%" & QueryWords( i ) & "%’"
   Else
    sql = sql & " AND [Description] LIKE ’%" & QueryWords( i ) & "%’"
   End If
  End If
 Next

 ’ 搜索Keywords字段 
 sql = sql & " ) OR ( [Keywords] LIKE ’%" & QueryWords( 0 ) & "%’"
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
   If uCase( QueryWords( i-1 ) ) = "OR" Then
    sql = sql & " OR [Keywords] LIKE ’%" & QueryWords( i ) & "%’"
   Else
    sql = sql & " AND [Keywords] LIKE ’%" & QueryWords( i ) & "%’"
   End If
  End If
 Next 

 ’  搜索Title字段  
 sql = sql & " ) OR ( [Title] LIKE ’%" & QueryWords( 0 ) & "%’"
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords )
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then
   If uCase( QueryWords( i-1 ) ) = "OR" Then
    sql = sql & " OR [Title] LIKE ’%" & QueryWords( i ) & "%’"
   Else
    sql = sql & " AND [Title] LIKE ’%" & QueryWords( i ) & "%’"
   End If
  End If
 Next
 

 

 ’ 搜索Summary字段  
 sql = sql & " ) OR ( [Summary] LIKE ’%" & QueryWords( 0 ) & "%’" 
 For i = LBound( QueryWords ) + 1 to UBound( QueryWords ) 
  If QueryWords( i ) <> "" and UCase( QueryWords(i) ) <> "OR" and UCase( QueryWords(i) ) <> "AND" Then 
   If uCase( QueryWords( i-1 ) ) = "OR" Then 
    sql = sql & " OR [Summary] LIKE ’%" & QueryWords( i ) & "%’" 
   Else 
    sql = sql & " AND [Summary] LIKE ’%" & QueryWords( i ) & "%’" 
   End If 
  End If 
 Next 

 sql = sql & " )" 

    ’  
    Set rs = Server.CreateObject("ADODB.Recordset") 
    rs.Open sql, conn, 3, 3      
     
    Response.Write "<BR><B> 你搜索的是: </B> " & QueryString     
     
    Response.Write "<BR><B> 搜索的关键字: </B> " 
 For i = LBound( QueryWords ) to UBound( QueryWords ) 
  Response.Write "<BR>" & strIndent & i & ": " & QueryWords( i ) 
 Next 

    ’ Print the SQL String 
    Response.Write "<BR><B> sql 语句 : </B> " & sql 
  
 ’ Print the Results 
    Response.Write "<BR><B> 结果    : </B> <UL>" 
 On Error Resume Next 
 rs.MoveFirst 
 Do While Not rs.eof 
  Response.Write "<BR>" & "<A HREF=’OpenPage.asp?IndexURL=" & rs.Fields("URL").Value & "’>" & rs.Fields("Title") & "</A> - "  
  Response.Write rs.Fields("Description") & "<BR>" 
  Response.Write "     <FONT SIZE=2>URL: " & rs.Fields("URL") & "</FONT>" 
  Response.Write "<HR SIZE=1 WIDTH=200 ALIGN=LEFT>" 
  rs.MoveNext 
 Loop 
 Response.Write "</UL>" 
  
end if    
%> 

</BODY> 
</HTML> 
 

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

用asp编写类似搜索引擎功能的代码的相关文章

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

用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入"中国人民"时,自动从中提取"中国"."人民"等关键字并在数据库内进行搜索.看完本文后,你就可以发现,这个功能实现起来竟然是如此的简单. 第一步,我们要建立一个名为db_sample.mdb的数据库(本文以Access2000数据库为例),并在其中建立表T_Sample.表T_Sample包括如下字段: ID 自动编号 U_Name 文本

ASP实现类似hashMap功能的类_应用技巧

java中的hashMap存取数据非常方便,可惜ASP中没有类似的类.作者在开发程序中需要类似的数据类型,于是构造了一个能基本类似hashMap功能的类,可以实现键值存取操作等,存取的数据可以为ASP 中的任何基本类型. 下面是程序的代码,贴到一个空的ASP中可以直接运行. <% set jb51 = new Jb '给mp对象赋值 jb51.putv "a","jb51.net" jb51.putv "b","www.jb51.

ASP实现类似hashMap功能的类

java中的hashMap存取数据非常方便,可惜ASP中没有类似的类.作者在开发程序中需要类似的数据类型,于是构造了一个能基本类似hashMap功能的类,可以实现键值存取操作等,存取的数据可以为ASP 中的任何基本类型. 下面是程序的代码,贴到一个空的ASP中可以直接运行. <% set jb51 = new Jb '给mp对象赋值 jb51.putv "a","jb51.net" jb51.putv "b","www.jb51.

ASP多条件查询功能实现代码(多关键词查询)_应用技巧

经过多次研究写出了如下代码,有需要的可以参考下 复制代码 代码如下: kd=server.HTMLEncode(request("keyword"))if kd<>"" then    kd=trim(kd)'kd=replace(kd," ","")  kd=replace(kd,"'","")  kd=replace(kd,"%","&quo

ASP多条件查询功能实现代码(多关键词查询)

经过多次研究写出了如下代码,有需要的可以参考下 复制代码 代码如下:kd=server.HTMLEncode(request("keyword"))if kd<>"" then    kd=trim(kd)'kd=replace(kd," ","")  kd=replace(kd,"'","")  kd=replace(kd,"%",""

C#如何自己编写类似Arraylist类的代码

问题描述 属性:publicTYPEthis[intindex]读/写索引器属性,获取一个值在指定的索引存储在数组或替换的值存储在一个特定的索引.publicintCapacity读/写属性,返回当前数组大小或调整数组到指定的大小如果可能的话(新的容量必须大到足以容纳存储的数据).提示:一维数组的大小可以确定使用它的长度属性,例如myArray.LengthublicintCount只读属性,返回目前存储在数组中数据个数构造函数: publicVector() parameter-less构造函

ASP.NET MVC验证码功能实现代码_实用技巧

前台 复制代码 代码如下: <img id="vcodeimg" src="/Home/VCode" width="70"                                    height="25" />                                 <span                                    style="cursor: p

asp.net(c#) RSS功能实现代码_实用技巧

可能还有很多未完善,但终归可以使用了,以后再慢慢改进!! 以下是我RSS界面的后台代码,给需要的朋友提供下我的经验: 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebCont

用ASP编写函数实现身份证验证代码

Function CheckCardId(e) arrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",") Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",") Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",") If Len(e) < 15