为了不使用户一页一页地找寻所需信息,大多数大型Web站点在突出的地方都有一个搜索特性,在文本框内输入几个单词,于是就有了想要看的页面。你可能得不到完全符合需要的页面,但是可以添加更多的关键字,细化搜索。本文通过IIS内置的Index Server服务,介绍如何建立和使用网站地图。
配置Index Server在执行Web服务器上的搜索之前,首先必须创建至少一个索引,并遵循以下步骤完成这项工作。
⒈启动Windows 2000 Server服务器上的索引。缺省情况下选择图标位于管理工具组中的计算机管理,启动后将出现图1所示的界面。窗口的右边提供关于当前在服务器上存在的索引信息。默认有两个索引:System和Web。
⒉要创建新的索引,用鼠标右键单击索引服务或右边的面板,选定新建编录。显示添加编录对话框,指定索引的名称并用浏览按钮选取位置。索引服务不会立即开始索引,此时将弹出一条消息框,单击确定继续。为了达到最佳的性能,索引服务可以放在和Web服务器隔离开的硬盘上。
⒊指定索引的目录,用右键单击新建的编录名,从弹出选单中选定属性,将出现如图2所示的对话框。第一个选项卡常规显示刚刚输入的内容,在第二个选项卡跟踪中的WWW服务器下拉列表中选取你要索引的Web网站。
⒋有了创建的编录,现在可以挑选你想在索引中包括的目录。这个强大的特性使你能创建几个用不同方式搜索内容的索引。例如,你可能想快速浏览从完整的文本中所引出的章节,这个特性使你能在Index Server内执行这项任务。要添加一个目录,用右键单击右边的面板,选定新建目录。在出现的对话框中通过浏览按钮选择目录并指定别名。如果必须登录到服务器才能得到需要的内容,则可以提供将使用的用户名和密码,以便得到需要的内容。如果想检查受保护的内容,则更要维护内容的安全性,这一特性非常有用,这样只有被授权的用户(也许是那些为此付钱的人)才能得到完整的内容。
还可以使用这个工具排除Web站点中不想索引的子目录。例如,检索Scripts/CGI目录就不会对用户有什么用。为此,只要双击该目录,将包括在索引中选定为否即可,见图3。
⒌在已经为站点包括/排除了所有目录后,用右键单击右面板,从弹出选单中选定启动,重新启动Index Server服务。服务器将开始浏览已经创建的索引并开始检索内容。
创建简单的搜索页搜索页分为两部分,即数据输入表单和搜索结果表单。程序清单如下:
<html><head><title>Index Server Demo</title></head><body><form method="POST" action="query.asp">搜索:<input type="text" name="txtQuery" size="16"><input type="submit" value="确定">
<% If Request("txtQuery") <> "" ThenDim objQueryDim rsQuerySet objQuery = Server.CreateObject("ixsso.Query")objQuery.Query = Request("txtQuery")objQuery.Columns="filename,vpath,DocTitle"objQuery.Catalog = "E:\InetPub\wwwroot\qhmolss"objQuery.MaxRecords = 50Set rsQuery = objQuery.CreateRecordset("nonsequential")
If rsQuery.EOF Then %><font color="#FF0000">没有适合您的查询</font><%Else %>
<table><% Do While Not rsQuery.EOFIf rsQuery("doctitle") <> "" Then %><tr><td><a href="<% = rsQuery("vpath") %>"><% = rsQuery("doctitle") %></a></td></tr><% End IfrsQuery.MoveNextLoopResponse.Write "</table>"End IfEnd If %></form></body></html>当第一次运行程序时,由于txtQuery变量为空,这样只显示程序的数据输入表单,此时如果输入查询单词“青海省”,程序将自身调用,显示出两个表单.
程序说明在这段程序中,Query对象是搜索引擎的中心,这个对象直接和Index Server引擎对话以检索数据。
为了能返回任何结果,必须设置几个关键的属性:Query、Columns和Catalog。本文使用MaxRecords属性,但不要求必须使用。Query属性用于存储搜索准则,在这种情况下,可以将数据输入表单文本框放在一页。Columns属性存储从查询返回的各列,这些列的名称是固定的。最后一个必须设置的属性是Catalog属性,它指定索引所在的目录。
一旦填充了Catalog对象,就创建了从查询得到的ADO记录集。这个记录集和从数据库中创建的记录集一样,可以以相同的方式导航。
其余的代码用于显示结果。在创建表格(例中只有一列)之后,循环遍历所有的纪录。可以选择只有标题的文件,因为Index Server能索引不必显示出来的其他类型的文件(如图形文件)。在某些情况下,你可能需要显示图像,但是在这种情况下,我们只需要文本文档。
使用vpaht和doctitle参数,可以构建指向找到的文件的URL。vpath参数是文件的虚拟路径,docttitle参数是文档的标题。对于HTML文档而言,这是在文件的<TITLE>标记之间的值。对于其他类型的文档,标题随着存储位置的不同而变。