robot 使用过滤器来确定处理哪些资源以及如何处理它们。当 robot 搜索资源的引用以及资源本身时,它对每个资源都应用过滤器。过滤器枚举资源并确定是否生成资源描述,以存储在搜索服务器数据库中。
robot 检查一个或多个起点 URL,应用过滤器,然后将过滤器应用到通过枚举这些 URL 产生的 URL 等。起点 URL 在 filterrules.conf 文件中定义。
每个枚举和生成过滤器均执行所有必需的初始化操作,并对当前资源应用比较测试。每项测试的目标都是允许或拒绝该资源。每个过滤器还有停止运行阶段,它在该阶段会执行清除操作。
如果一个资源获得允许,那么它会通过过滤器继续其历程。robot 最后会枚举该资源,尝试搜索更多的资源。生成器还可能会为其创建资源描述。
如果某资源被拒绝,则该资源便会被弃用。过滤器不会对被拒绝的资源执行进一步操作。
这些操作没有必然的连锁关系。一些资源导致枚举;另一些资源导致生成 RD。许多资源会导致枚举并生成 RD。例如,如果资源是一个 FTP 目录,则通常不会为该资源生成 RD。不过,robot 可能会枚举 FTP 目录中的文件。一个包含指向其他文档链接的 HTML 文档可导致生成一个 RD,并且还会导致所有链接文档的枚举。
以下各节说明了过滤流程:
枚举和生成过滤器的过滤流程都有五个阶段。
设置 – 执行初始化操作。在 robot 生命期中只发生一次。
元数据 – 根据资源可用的元数据过滤资源。在通过网络检索资源之前,每个资源都会执行一次元数据过滤。表 12–1 列出了常见元数据类型的示例。
元数据类型 |
描述 |
示例 |
---|---|---|
完整的 URL |
资源的位置 |
http://home.siroe.com/ |
协议 |
URL 的访问部分 |
http、ftp、file |
主机 |
URL 的地址部分 |
www.siroe.com |
IP 地址 |
主机的数字版本 |
198.95.249.6 |
路径 |
URL 的路径部分 |
/index.html |
深度 |
从起点 URL 开始的链接数 |
5 |
数据 – 根据其数据过滤资源。在通过网络检索数据之后,每个资源的数据都会过滤一次。可用于过滤的数据包括:
content-type
content-length
content-encoding
content-charset
last-modified
expires
枚举 – 枚举当前资源,以确定其是否指向要检查的其他资源。
生成 – 为资源生成资源描述 (RD) 并将其保存在搜索服务器数据库中。
停止运行 – 执行任何所需的终止操作。此过程在 robot 的生命期中发生一次。
filter.conf 文件包含枚举和生成过滤器的定义。该文件包含多个枚举和生成所共用的过滤器。robot 所使用的过滤器是由 robot.conf 文件中的 enumeration-filter 和 generation-filter 属性指定。
过滤器定义具有一个定义明确的结构:该结构由标题、正文和结尾组成。标题用于确定过滤器的开始处和声明过滤器的名称,例如:
<Filter name="myFilter"> |
正文由一系列过滤器指令组成,这些指令定义过滤器在设置、测试、枚举或生成以及停止运行期间的行为。每条指令都指定了一种功能,在适用情况下,还指定了功能的属性。
结尾使用 </Filter> 来标记。
示例 12–1 显示了一个名为 enumeration1 的过滤器。
<Filter name="enumeration1> Setup fn=filterrules-setup config=./config/filterrules.conf # Process the rules MetaData fn=filterrules-process # Filter by type and process rules again Data fn=assign-source dst=type src=content-type Data fn=filterrules-process # Perform the enumeration on HTML only Enumerate enable=true fn=enumerate-urls max=1024 type=text/html # Cleanup Shutdown fn=filterrules-shutdown </Filter> |
过滤器指令使用 robot 应用函数 (robot application function, RAF) 来执行操作。它们的使用方法和操作流程类似于 Sun Java System Web Server 的 obj.conf 文件中的 NSAPI 指令和服务器应用程序函数 (Server Application Function, SAF)。与 NSAPI 和 SAF 一样,数据的存储和传送使用属性块(亦称作 pblock)。
六条 robot 指令(或 RAF 类)对应于资源过滤流程中列出的过滤阶段和操作:
设置
元数据
数据
枚举
生成
停止运行
每条指令有其自身的 robot 应用函数。例如,配合“元数据”和“数据”指令使用的过滤函数、配合“枚举”指令使用的枚举函数、配合“生成”指令使用的生成函数等。
内置 robot 应用函数以及编写自定义 robot 应用函数的说明在《Sun Java System Portal Server 7.1 Developer's Guide》中有介绍。
大多数情况下,您可以使用管理控制台来创建大多数基于站点定义的过滤器。然后可根据需要进一步修改 filter.conf 和 filterrules.conf 文件。这些文件位于 /var/opt/SUNWportal/searchservers/searchserverid/config 目录。
要创建一组更复杂的属性,可编辑 robot 使用的配置文件。
当您编写或修改过滤器时,请注意以下顺序
指令的执行顺序(尤其是每一阶段的可用信息)。
filterrules.conf 中的过滤器规则。
您还可以执行以下操作:
修改 robot.conf 文件中的属性。
修改 filter.conf 文件中的 robot 应用函数。
创建您自己的 robot 应用函数。
有关更多信息,参见《Sun Java System Portal Server 7.1 Developer's Guide》