外包网www.waibao.com.cn
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
外包网论坛(威客,威客网,悬赏任务)

如何成为一名群主?   

发表新主题 回复该主题
本主题被查看44次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: 用asp编写类似搜索引擎功能的代码
版主
UID: 16051
来自:
精华: 0
积分: 6673
帖子: 6669
注册: 2008-6-10 11:56:00
状态: 离线
包子皮: 4.00
包子馅: 1670.50 元
只看楼主 2008-11-21 17:32
用asp编写类似搜索引擎功能的代码
我的身份:公司
认证信息:  未实名认证
基本诚信:0
项目诚信:0
经验积分:26
我的服务范围:
尚未填写
    
首先建一个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>

                    
#1  
发表新主题 回复该主题
本主题被查看44次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2009-01-09 14:11:31

版权所有 外包网  
         Powered by Discuz!NT 1.0.2656    Copyright © 2001-2009 Comsenz Inc.
Processed in 0.096 seconds