帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
ASP实现对Web搜索引擎Index Server的访问
作者:佚名 发布时间:2005-04-02 来源:不详
 

    摘要:Index Server是专门为企业Web网站设计的专业搜索引擎,传统的访问方法HTML/IDQ/HTX由于固有的特性,缺乏灵活性。本文介绍用ASP实现对Index Server访问的两种方法,以及如何实现复杂查询,和对查询结果的控制。
    关键字:Index Server ASPADO

    在电子商务方兴未艾的今天,企业上网不但是为了展示企业形象,提高知名度;也意味着无穷的商机与财富。而内部网Intranet则为企业带来了全新的沟通方式和管理理念。因此构建企业Web站点已经排上了许多企业信息部门的日程。Web的优点在于可以方便的展示大量信息,但同时也带来了信息的泛滥使得寻找有效信息非常困难。为此,好的企业网站都拥有强大的搜索引擎,使得网站更加友好和便利。对于有政策法规、合同定单等大量文档上网的企业网站,信息搜索的服务必不可少。
    Index Server是专门为企业网站设计的专业搜索引擎,利用它可以非常轻松的在网站中加入功能强大的信息搜索功能。并且Index Server搜索的文件不局限于HTML格式,还支持TXT、DOC、EXL、RTF、GIF、JPEG等多种文件格式,并可以通过插入第三方插件来支持更多的文件格式。搜索范围可以是存放在本地服务器中的内容,也可以是网络中其他机器的共享资源,包括INTERNET中的资源。搜索时除了文档中的关键字词以外,还可以就文件大小、修改日期、作者等属性进行搜索。此外Index Server还支持英文、简体中文、德语、法语、日语等语种,无须编程,就可在网站中实现多语种的搜索引擎。由于Index Server是零维护设计,故只需启动Index Server服务,搜索引擎就会自动运行。而在Web服务器端,需要加入与Index Server连接的页面。
    传统Index Server的工作过程由浏览器通过HTML文档的FORM表单向Web服务器发出请求开始,Web服务器通过一个类似于数据库接口的专用文件.IDQ与Index Server连接,将客户的请求转换成Index Server理解的语句。Index Server再将查询结果按照模板文件HTX定义的格式组织成HTML文档,通过Web服务器返回给浏览器。这种方式称为HTML/IDQ/HTX方式,需要三个文件配合完成查询。使用这种方式不能对查询结果进行处理,并且模板文件HTX格式单一。因此微软在Index Server 2.0 中加入了对Active Server Scripts的支持,用一个ASP文件替代先前的三个文件。由于ASP有灵活且功能强大的脚本语言操纵,因此Web开发者可以设计条件复杂的查询,并能更加精确的处理查询结果。

图1.ASP访问Index Server工作过程
    熟悉Index Server 1.0 或 1.1版本的用户,可以在ASP文件中使用Index Server query object,对象参数和查询语句都和传统的.IDQ文件保持一致。此外,还可以利用ADO 技术创建对象,用标准数据库查询语言Structured Query Language (SQL)语句定义查询。两种对象都以ADO记录集(Recordsets)的形式返回结果。因此对于数据库Recordset操作的代码可以直接用于查询结果。
    ASP文件要完成查询,首先要在文件中定义一个表单用于接收查询要求,表单的动作指向ASP文件本身。本例中用名为SearchString的文本框接收查询字段。


eg.1 在sample .asp文件中定义查询表单

<FORMACTION = "sample .asp" METHOD="GET">
<TABLE >
<TR>
<TD>输入欲搜索关键词:</TD>
</TR>
<TR>
<TD><INPUT TYPE="TEXT" NAME="SearchString" SIZE="40" VALUE=""></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="GO"></TD>
</TR>
</TABLE>


接下来在ASP文件中建立Index Server 查询对象,并为Index Server 参数赋值。

方法1.利用Index Server query object和参数

<%
Set Q= Sever.CreatObject(“ixsso.Query”)‘创建查询对象
Set Util= Sever.CreatObject(“ixsso.Util”)
Q.Query= Request(“SearchString”)‘查询字段
Q.SortBy=”rank[d]”?‘按照符合程度降序排列
Q.Columns=”DocTitle,vpath,filename,size,write,characterization,rank”
‘返回记录属性
Q.MaxRecords=300?‘最多返回记录数
Util.AddScopeToQuery Q,”/”,”DEEP”‘搜索所有子目录
Q.LocaleID=Util.ISOToLocaleID(“ZH-CN”)‘指定所用语言为简体中文
Set RS = Q.CreateRecordSet("nonsequential")‘创建输出集
%>

方法2.利用ADO query object和SQL语句

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString ="provider=msidxs;"
Conn.Open
Set AdoCommand = Server.CreateObject("ADODB.Command")
Set AdoCommand.ActiveConnection = Conn
AdoCommand.CommandText = "Select DocTitle,vpath,filename,size,write,”&
“characterization,rank FROMSCOPE() WHERE CONTAINS (’”&
SearchString &”’) ORDER BY rank DESC”
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open AdoCommand
%>

创建包括文件大小、作者等属性的复杂条件的查询,可在表单中加入输入相应限定条件的域,如图2所示。

图2.带限定条件的复杂查询表单
提交表单后各值由Query语句接收,如以下一个Query语句:

Q. Query=“ (@DocAuthor ”+ DocAuthorRestriction +“) & (@Write >” +
FMModDate + “) & (@Size ”+ FSRest + FSRestVal +“) & @Contenets”+
SearchString

    其中,DocAuthorRestriction、FMModDate、FSRest、FSRestVal、SearchString分别代表浏览器端输入的作者、修改时间、比较符号、比较大小和关键字词等值。此外Index Server还支持自然语言查询(Free Text Queries),如可输入语句:“怎样使用Index Server管理工具?”。并在Query字段中添加标记$ Contenets。Index Server将进行语法分析,自动生成查询语句。
如前所述,两种查询对象返回的结果都是ADO记录集(Recordsets),因此可以用数据指针来操作输出。

eg.2 在sample .asp文件中定义输出格式

<% if Not RS.EOF %>
<table border=0>
<colgroup width=105>
<% end if %>

<% Do While Not RS.EOF %>
<tr>
<td valign=top >
<a href="<%=RS("vpath")%>" ><%= Server.HTMLEncode( RS("filename") )%>
</a></td>
<td valign=top>
<%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%>
<b><I>摘要 </I></b><%= Server.HTMLEncode(RS("characterization"))%>
<%end if%>
<p><a href="<%=RS("vpath")%>" >http://<%=Request("server_name")%>
<%=RS("vpath")%></a></p>
</td>
</tr>
<%
RS.MoveNext
Loop
%>
</table>

    根据需要,还可以输出作者、文件大小、创建时间等属性。比较常见的还有把文件符合查询的程度划分为五个级别,分别用不同数目的星图标识,这是传统的HTX文档无法实现的功能。
    结合ASP和 Index Server,我们可以开发出功能强大的搜索引擎应用。实施简单方便,没有特殊的编程要求,并且搜索的速度和准确度也比较理想,非常适合企业级Web网站采纳。
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·使用ASP实现基于WEB的数据库资料  (2005-04-02)
 ·asp实现在web中显示电子表格数据  (2005-04-02)
 ·asp实现数据记录的备份及恢复  (2005-04-02)
 ·实用篇:用asp实现QQ在线查询  (2005-04-02)
 ·如何用ASP实现电子贺卡一例  (2005-04-02)
 ·利用ASP实现对表的分页浏览  (2005-04-02)
 ·用ASP实现图片上传并存入数据库  (2005-04-02)
 ·用ASP实现网页BBS  (2005-03-12)
 ·用ASP实现网页保密的两种方法  (2005-03-12)
 ·用ASP实现一个真正的注册页面  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统