刚写的应用于某软件的全文检索程序

80酷酷网    80kuku.com

  程序|全文检索|全文检索<p> <!--#include file=function/conn.asp-->




<%

keyWord=trim(request("oKey"))

sType=trim(request("oType"))

if keyWord="" or keyWord="关键字…" then

Response.Write "请输入关键字!"

Response.End()

end if

if sType="" then

Response.Write "请选择查询信息类别"

Response.End()

end if

dim ftsTable '要查询信息的储存表名

dim ftsFolder '要查询信息的储存文件夹 

if sType="1" then

ftsTable="tb_bzxx"

ftsFolder=fjroot

elseif sType="2" then

ftsTable="tb_other"

ftsFolder=fjroot_other

elseif sType="3" then

ftsTable="tb_info"

ftsFolder=fjroot_info

else

Response.Write "出错了!"

Response.End

end if

sql=""

if sType="1" then

sql="select bz_xuhao as xuhao,bz_name as bname,bz_code as bcode,bz_htm as htm from " & ftsTable

elseif sType="2" then

sql="select p_xuhao as xuhao,p_name as bname,p_code as bcode,p_htm as htm from " & ftsTable

elseif sType="3" then

sql="select info_id as xuhao,info_htm,info_type as htm from " & ftsTable

else

Response.Write "出错了!"

Response.End

end if

Call OPenConn() ' 打开数据库连接

set fso=server.CreateObject("scripting.filesystemobject")

set rs=server.createobject("adodb.recordset")

dim oPattern

oPattern="<p>|<p(.*)>|</p>"

'如果是查询第三种信息(其他信息),则先将所有的信息类别取出来,放到数组中。

dim infoType()

if sType="3" then

rs.Open "select type_id,type_name from tb_info_type order by type_id desc",adocon,3,1

if rs.RecordCount<=0 then

CloseRs rs

Call CloseConn

Response.Write "出错了!"

Response.End()

end if

redim infoType(clng(rs(0)))

do while not rs.EOF

infoType(clng(rs(0)))=rs(1)

rs.MoveNext

loop

rs.Close()

end if

%>

<h4 ALIGN= "CENTER" > 标准信息系统全文检索结果

 关键字: <span > <%=KEYWORD%>

</span>


</h4>

<hr>

<table width= "600" >

<tr>

<td > <%

'进行检索

rs.Open sql,adocon,3,1

if rs.RecordCount>0 then

sCount=0

do while not rs.EOF

findPos=0

htm=rs("htm")

if htm<>"" then

vpath=ftsFolder & "/" & rs("xuhao") & "/" & htm

filePath=Server.MapPath(vpath)

if fso.FileExists(filepath) then

set oFile=fso.GetFile(filepath)

set oFilestream=oFile.openastextstream(1)

oFileInfo=""

if not oFilestream.atendofstream then

oFileInfo=FilterHTML(FilterBr(trim(oFilestream.readall)))

if oFileInfo<>"" then

findPos=instr(1,oFileInfo,keyWord,1)

'查到了数据,需要显示

if findPos>0 then

Response.Write "<a href='" & vpath & "' target='_blank'>"

if sType="1" or sType="2" then

Response.Write "<span & rs("bname") & " ( " & rs("bcode") & " )  </span></a>
"

else

Response.Write "<span & infotype(clng(rs("info_Type"))) & "  </span></a>
"

end if

if findPos>50 then

Response.Write "…" & replace(mid(oFileInfo,findPos-50,200),keyWord,"<span & keyWord & "</span>",1,-1,1) &

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: