关于筛选菜单

使用“筛选”菜单,可使用在索引Web文档之前更改其内容的脚本。

关于筛选脚本

可以使用Filtering Script更改Web文档的内容,然后再对其进行索引。

您可以插入HTML标记,删除不相关的内容,甚至根据文档的URL、MIME类型和现有内容创建新的HTML元数据。 过滤脚本是Perl脚本,它提供强大的字符串处理和常规表达式匹配的灵活性。 将过滤脚本与初始化脚本、终止脚本、URL掩码脚本和测试URL一起使用。

每次从您的网站读取文档时,都会运行筛选脚本。 脚本作为标准过滤器运行。换言之,从STDIN读取数据,以某种方式转换该数据,并将结果写入STDOUT。 您可以使用过滤脚本将状态消息从过滤脚本打印到索引日志。 您可以将消息打印到STDERR,或通过_search_debug_log()子例程打印。

在“分阶段过滤脚本”页面的​Expert (diff)​模式下,可以使用的一些GNU差异选项包括:

GNU差异选项

描述

-b

忽略空白量的更改。

-B

忽略插入或删除空行的更改。

-c

使用上下文输出格式,显示三行上下文。

-C行

使用上下文输出格式,显示上下文的行(整数),如果未指定行,则显示三行。

-i

忽略大小写更改;考虑等效的大写和小写字母。

-f

使输出与编辑脚本类似,但更改其在文件中的显示顺序。

-n

输出RCS格式扩散;与 -f 类似,不同之处在于每个命令都指定受影响的行数。

-u

使用统一的输出格式,显示三行上下文。

-U行

使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。

您可以在这些脚本中使用局部变量、全局变量或同时使用它们。 所有全局变量都以命名空间“main::”为前缀。 启动筛选脚本时,其环境包含以下标准文件句柄:

  • STDIN —— 无内容(读取时立即返回EOF)
  • STDOUT —— 替换HTML(如果数据打印到STDOUT,则使用它代替原始文档)
  • STDERR —— 打印到STDERR的数据作为错误打印到索引日志

此外,还可以使用_search_debug_log()子例程将自定义消息写入索引日志,如下例所示:

# Log information to the Index Log 
_search_debug_log("Done processing document: " . $main::search_url);

这些消息以单词DEBUG作为前言显示,并且不作为错误记录。

以下是筛选示例。 网页<title>字段通常以公司名开头。 尽管此信息对于站点导航有用,但在搜索时并不相关。 如果所有MegaCorp网页的标题都开始有一个通用字符串,如:

<title>MegaCorp -- meaningful title 
here</title>

您应从每个文档标题的开头删除“ MegaCorp --”,并计算使用过滤脚本处理的每个文档。 为此,您可以使用以下脚本:

# Make sure this is an HTML document. 
if ($main::ws_content_type =~ /^text\/html/) { 
    # Read the entire document into a local scalar variable. 
    my @docarray = <>; 
    my $doc = join("", @docarray); 
 
    # Remove "MegaCorp -- " from the title. 
    $doc =~ s/(<TITLE>)MegaCorp -- /$1/gis; 
 
    # Print the resulting document. 
    print $doc; 
 
    # Count that we've filtered one more document. 
    $main::doc_count++; 
}

全局变量

您可以在任何筛选脚本中使用以下变量:

变量 描述
$main::search_crawl_type $main::search_crawl_type表示正在进行的索引操作类型。 已弃用表单:$main::ws_crawl_type索引操作和相关值包括:
  • 完整索引:手动- manual
  • 完整索引:计划- auto
  • 完整索引:远程控制- CGI
  • 增量索引:手动- manual-incremental
  • 增量索引:计划- auto-incremental
  • 增量索引:远程控制- CGI-incremental
  • 脚本索引:手动- manual-indexlist.txt
  • 脚本索引:计划- auto-indexlist.txt
  • 脚本索引:远程控制- CGI-indexlist.txt
  • 重新生成- manual-upgrade
$main::search_clear_cache 该值指示当前索引操作是否请求了“清除索引缓存”索引选项。 如果请求“清除索引缓存”,则$main::search_clear_cache的值为“ 1”。 弃用版本:$main::ws_clear_cache
$main::search_fields 该值包含在帐户中定义的元数据字段的制表符分隔列表。 默认情况下,该值为: url title desc keys target body alt date charset language已弃用表单:$main::ws_fields
$main::search_collections 该值包含帐户中定义的集合的制表符分隔列表。 弃用版本:$main::ws_collections
$main::search_url 该值是文档的完全限定URL。 弃用版本:$main::ws_url
$main::search_content_type 该值是从http-equiv meta标签获取的文档的内容类型。 典型值为“text/html;charset=iso-8859-1”。 弃用版本:$main::ws_content_type
$main::search_content_class 该值是文档的内容类,从content-type字段派生。 弃用版本:$main::ws_content_class
$main::search_syntax_check 该值反映了“检查语法”按钮的使用。 如果单击,则值为1(1);否则,其值为0(零)。 弃用版本:$main::ws_syntax_check
$main::search_last_mod_date 如果Web服务器提供,此值包含文档上次修改日期的Epoch表示形式(1970年1月1日以来的秒)。 可以使用Perl localtime()库调用格式化此值。

快速提示

  • 所有全局变量前面都有命名空间“main::”:$main::doc_count = 0;

  • 所有局部变量都使用“my”声明:my $i = 0;

  • 子例程在初始化脚本中定义。 他们不需要明确的“主::”命名空间:sub my_sub { ...

    }

  • 在对文件进行更改之前,先测试$main::search_content_type。 测试可以帮助您避免对二进制文件(如SWF文件或PDF文件)做出粗心改动:

    if ($main::search_content_type =~ /^text\/html/) { ...

  • $main::search_content_type是服务器提供的完整Content-Type头。 它有时可能包含简单的MIME类型,如“text/html”。 或者,它可以包含MIME类型,后跟其他信息,如文档的字符集编码,如“text/html;charset=iso-8859-1”。

  • 对于每种类型的非HTML文档,$main::search_content_type可以采用各种值。 测试脚本中的每个值变得麻烦。 例如,某些Word文档的内容类型值为“application/msword”、“application/vnd.ms-word”或“application/x-msword”。 在这种情况下,$main::search_content_class可以采用以下值:

    • html
    • pdf
    • excel
    • powerpoint
    • mp3
    • text
  • 在示例中,测试$main::search_content_class的“word”将匹配三种可能的content-type值中的任意一种。

  • 如果从筛选脚本中没有将任何内容打印到STDOUT,则文档会完全按下载方式使用。 即,如果您不需要更改文档中的任何内容,则无需将该文档的STDIN复制到STDOUT。

  • 如果要从文档中删除所有文本,请打印有效的文件STDOUT。 例如,要从HTML文档中完全删除所有文本,请执行以下操作:print "<html></html>";

添加筛选脚本

过滤脚本是一个Perl脚本,它针对从您的网站下载的每个文档运行。

将过滤脚本与初始化脚本、终止脚本和URL掩码脚本结合使用。

请确保重新构建站点索引,以便您的客户能够看到筛选脚本的结果。

请参阅配置分阶段网站的增量索引

添加筛选脚本

  1. 在产品菜单中,单击​Settings > Filtering > Filtering Script

  2. (可选)在Filtering Script页面的Test URL字段中,输入网站上文档的URL。

    单击测试选项可查看对原始HTML文本的更改。

    选项

    描述

    测试URL字段

    允许您在网站上输入文档的URL。

    测试

    根据筛选脚本和URL掩码测试URL。

    下载测试URL文档,然后将该用作筛选脚本的STDIN输入。 然后运行初始化、过滤和终止脚本。 如果过滤脚本中有任何STDOUT输出,则该输出将显示在新的浏览器窗口中。

    仅测试

    仅测试脚本的操作。

    预览

    允许您视图页面。

    全视

    生成文档的完整前后表视图。

    短视

    仅显示修改前与修改后视图之间的差异。

    专家(差异)

    使用提供的命令行选项显示用于比较文件的GNU diff命令的原始输出。

    筛选脚本

    允许您在提供的字段中粘贴过滤脚本。

    保存更改

    保存筛选脚本。

    检查语法

    允许您通过运行初始化、筛选和终止脚本快速检查脚本的语法。 它不会更新并保存您的脚本。

    将打印所有Perl编译器错误和警告以及所有STDERR输出。

    在客户看到脚本的效果之前,您必须重新构建站点索引。

    GNU diff命令行选项

    在“分阶段过滤脚本”页面的​Expert (diff)​模式下,可以使用的一些GNU差异选项包括:

    GNU diff命令行选项

    描述

    -b

    忽略空白量的更改。

    -B

    忽略插入或删除空行的更改。

    -c

    使用上下文输出格式,显示三行上下文。

    -C行

    使用上下文输出格式,显示上下文的行(整数),如果未指定行,则显示三行。

    -i

    忽略大小写更改;考虑等效的大写和小写字母。

    -f

    使输出与编辑脚本类似,但更改其在文件中的显示顺序。

    -n

    输出RCS格式扩散;与 -f 类似,不同之处在于每个命令都指定受影响的行数。

    -u

    使用统一的输出格式,显示三行上下文。

    -U行

    使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。

  3. 单击​Test​以测试筛选脚本和URL掩码。

    单击​Test​不更新并保存筛选脚本。

  4. 在Filtering Script字段中,粘贴您的脚本。

  5. (可选)单击​Check Syntax,通过运行筛选、初始化和终止脚本,对脚本执行快速语法检查。

    Check Syntax 不更新和保存脚本。

  6. 单击 Save Changes.

  7. (可选)如果要预览结果,请重新构建分阶段站点索引。

    请参阅配置分阶段网站的增量索引

  8. (可选)在Filtering Script页面上,执行下列任一操作:

关于初始化脚本

可以使用Initialization Script更改Web文档的内容,然后再对其进行索引。

您可以插入HTML标记,删除不相关的内容,甚至根据文档的URL、MIME类型和现有内容创建新的HTML元数据。 初始化脚本是Perl脚本,它提供强大的字符串处理和常规表达式匹配的灵活性。 将初始化脚本与过滤脚本、终止脚本、URL掩码脚本和测试URL一起使用。

初始化脚本在开始索引之前运行一次。 使用此脚本可初始化筛选脚本使用的所有全局变量和子例程。 您可以使用初始化脚本将状态消息从筛选脚本打印到索引日志。 您可以将消息打印到STDERR,或通过_search_debug_log()子例程打印。

在“分阶段初始化脚本”页的​Expert (diff)​模式下,可以使用的一些GNU差异选项包括:

GNU差异选项

描述

-b

忽略空白量的更改。

-B

忽略插入或删除空行的更改。

-c

使用上下文输出格式,显示三行上下文。

-C行

使用上下文输出格式,显示上下文的行(整数),如果未指定行,则显示三行。

-i

忽略大小写更改;考虑等效的大写和小写字母。

-f

使输出与编辑脚本类似,但更改其在文件中的显示顺序。

-n

输出RCS格式扩散;与 -f 类似,不同之处在于每个命令都指定受影响的行数。

-u

使用统一的输出格式,显示三行上下文。

-U行

使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。

您可以在这些脚本中使用局部变量、全局变量或同时使用它们。 所有全局变量都以命名空间“main::”为前缀。 启动初始化脚本时,其环境包含以下标准文件句柄:

  • STDIN —— 无内容(读取时立即返回EOF)
  • STDOUT —— 无内容(如果数据打印到STDOUT,则会丢弃它)
  • STDERR —— 打印到STDERR的数据作为错误打印到索引日志

此外,还可以使用_search_debug_log()子例程将自定义消息写入索引日志,如下例所示:

# Log information to the Index Log 
_search_debug_log("Done processing document: " . $main::search_url);

这些消息以单词DEBUG作为前言显示,并且不作为错误记录。

初始化脚本的示例如下:

# My subroutine to do something. 
sub my_sub_for_the_filtering_script { 
    my ($param1, $param2) = @_; 
    ... 
} 
 
# Initialize the document counter. 
$main::doc_count = 0;

请参阅全局变量

快速提示

  • 所有全局变量前面都有命名空间“main::”:$main::doc_count = 0;

  • 所有局部变量都使用“my”声明:my $i = 0;

  • 子例程在初始化脚本中定义。 他们不需要明确的“主::”命名空间:sub my_sub { ...

    }

  • 在对文件进行更改之前,先测试$main::search_content_type。 测试可以帮助您避免对二进制文件(如SWF文件或PDF文件)做出粗心改动:

    if ($main::search_content_type =~ /^text\/html/) { ...

  • $main::search_content_type是服务器提供的完整Content-Type头。 它有时可能包含简单的MIME类型,如“text/html”。 或者,它可以包含MIME类型,后跟其他信息,如文档的字符集编码,如“text/html;charset=iso-8859-1”。

  • 对于每种类型的非HTML文档,$main::search_content_type可以采用各种值。 测试脚本中的每个值变得麻烦。 例如,某些Word文档的内容类型值为“application/msword”、“application/vnd.ms-word”或“application/x-msword”。 在这种情况下,$main::search_content_class可以采用以下值:

    • html
    • pdf
    • excel
    • powerpoint
    • mp3
    • 文本
  • 在示例中,测试$main::search_content_class的“word”将匹配三种可能的content-type值中的任意一种。

  • 如果从筛选脚本中没有将任何内容打印到STDOUT,则文档会完全按下载方式使用。 即,如果您不需要更改文档中的任何内容,则无需将该文档的STDIN复制到STDOUT。

  • 如果要从文档中删除所有文本,请打印有效的文件STDOUT。 例如,要从HTML文档中完全删除所有文本,请执行以下操作:print "<html></html>";

添加初始化脚本

初始化脚本是Perl脚本,在对任何文档建立索引之前运行一次。

将初始化脚本与过滤脚本、终止脚本和URL掩码脚本结合使用。

请确保重新构建站点索引,以便您的客户能够看到初始化脚本的结果。

请参阅配置分阶段网站的增量索引

添加初始化脚本

  1. 在产品菜单中,单击​Settings > Filtering > Initialization Script

  2. (可选)在Initialization Script页面的Test URL字段中,输入网站上文档的URL。

    单击测试选项可查看对原始HTML文本的更改。

    请参阅​添加过滤脚本​下的过滤选项表。

    单击​Test​以测试筛选脚本和URL掩码。

    单击​Test​不更新并保存您的初始化脚本。

  3. 在Initialization Script字段中,粘贴您的脚本。

  4. (可选)单击​Check Syntax,通过运行筛选、初始化和终止脚本,对脚本执行快速语法检查。

    Check Syntax 不更新和保存脚本。

  5. 单击 Save Changes.

  6. (可选)如果要预览结果,请重新构建分阶段站点索引。

    请参阅配置分阶段网站的增量索引

  7. (可选)在Initialization Script页面上,执行下列任一操作:

关于终止脚本

可以使用Termination Script更改Web文档的内容,然后再对其进行索引。

您可以插入HTML标记,删除不相关的内容,甚至根据文档的URL、MIME类型和现有内容创建新的HTML元数据。 初始化脚本是Perl脚本,它提供强大的字符串处理和常规表达式匹配的灵活性。 将终止脚本与初始化脚本、筛选脚本、终止脚本、URL掩码脚本和测试URL一起使用。

在所有文档建立索引后,将运行终止脚本一次。 您可以使用终止脚本将状态消息从过滤脚本打印到索引日志。 您可以将消息打印到STDERR,或通过_search_debug_log()子例程打印。

在“分阶段终止脚本”页面的​Expert (diff)​模式下,可以使用的一些GNU diff命令行选项包括:

GNU diff命令行选项

描述

-b

忽略空白量的更改。

-B

忽略插入或删除空行的更改。

-c

使用上下文输出格式,显示三行上下文。

-C行

使用上下文输出格式,显示上下文的行(整数),如果未指定行,则显示三行。

-i

忽略大小写更改;考虑等效的大写和小写字母。

-f

使输出与编辑脚本类似,但更改其在文件中的显示顺序。

-n

输出RCS格式扩散;与 -f 类似,不同之处在于每个命令都指定受影响的行数。

-u

使用统一的输出格式,显示三行上下文。

-U行

使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。

您可以在这些脚本中使用局部变量、全局变量或同时使用它们。 所有全局变量都以命名空间“main::”为前缀。 启动终止脚本时,其环境包含以下标准文件句柄:

  • STDIN —— 无内容(读取时立即返回EOF)
  • STDOUT —— 无内容(如果数据打印到STDOUT,则会丢弃它)
  • STDERR —— 打印到STDERR的数据作为错误打印到索引日志

此外,还可以使用_search_debug_log()子例程将自定义消息写入索引日志,如下例所示:

# Log information to the Index Log 
_search_debug_log("Done processing document: " . $main::search_url);

这些消息以单词DEBUG作为前言显示,并且不作为错误记录。

要在索引日志中将筛选脚本处理的文档数显示为错误行,可以使用以下终止脚本:

# Print the value of the document counter. 
print STDERR "Total docs: $main::doc_count\n"; 
# Or, using the log subroutine: 
_search_debug_log("Total docs: " . $main::doc_count);

请参阅全局变量

快速提示

  • 所有全局变量前面都有命名空间“main::”:$main::doc_count = 0;

  • 所有局部变量都使用“my”声明:my $i = 0;

  • 子例程在初始化脚本中定义。 他们不需要明确的“主::”命名空间:sub my_sub { ...

    }

  • 在对文件进行更改之前,先测试$main::search_content_type。 测试可以帮助您避免对二进制文件(如SWF文件或PDF文件)做出粗心改动:

    if ($main::search_content_type =~ /^text\/html/) { ...

  • $main::search_content_type是服务器提供的完整Content-Type头。 它有时可能包含简单的MIME类型,如“text/html”。 或者,它可以包含MIME类型,后跟其他信息,如文档的字符集编码,如“text/html;charset=iso-8859-1”。

  • 对于每种类型的非HTML文档,$main::search_content_type可以采用各种值。 测试脚本中的每个值变得麻烦。 例如,某些Word文档的内容类型值为“application/msword”、“application/vnd.ms-word”或“application/x-msword”。 在这种情况下,$main::search_content_class可以采用以下值:

    • html
    • pdf
    • excel
    • powerpoint
    • mp3
    • 文本
  • 在示例中,测试$main::search_content_class的“word”将匹配三种可能的content-type值中的任意一种。

  • 如果从筛选脚本中没有将任何内容打印到STDOUT,则文档会完全按下载方式使用。 即,如果您不需要更改文档中的任何内容,则无需将该文档的STDIN复制到STDOUT。

  • 如果要从文档中删除所有文本,请打印有效的文件STDOUT。 例如,要从HTML文档中完全删除所有文本,请执行以下操作:print "<html></html>";

添加终止脚本

终止脚本是一个Perl脚本,在所有文档索引后运行一次。

将终止脚本与过滤脚本、终止脚本和URL掩码脚本结合使用。

请确保重新构建站点索引,以便您的客户能够看到初始化脚本的结果。

请参阅配置分阶段网站的增量索引

添加终止脚本

  1. 在产品菜单中,单击​Settings > Filtering > Termination Script

  2. (可选)在Termination Script页面的Test URL字段中,输入网站上文档的URL。

    单击测试选项可查看对原始HTML文本的更改。

    请参见​添加筛选脚本​下的筛选选项表。

    单击​Test​以测试筛选脚本和URL掩码。

    单击​Test​不更新并保存您的终止脚本。

  3. 在Termination Script字段中,粘贴您的脚本。

  4. (可选)单击​Check Syntax,通过运行初始化、筛选和终止脚本,对脚本执行快速语法检查。

    Check Syntax 不更新和保存脚本。

  5. 单击 Save Changes.

  6. (可选)如果要预览结果,请重新构建分阶段站点索引。

    请参阅配置分阶段网站的增量索引

  7. (可选)在Termination Script页面上,执行下列任一操作:

关于URL掩码脚本

通过筛选,您可以在对Web文档的内容进行索引之前更改该内容。 您可以插入HTML标记,删除不相关的内容,甚至根据文档的URL、MIME类型和现有内容创建新的HTML元数据。 URL掩码脚本是Perl脚本,它提供强大的字符串处理和常规表达式匹配的灵活性。

要更改仅存在于网站特定部分的文档的内容,可指定包括URL蒙版、排除URL蒙版或两者,以定义相应的页面。

如果只想更改"https://www.mysite.com/faqs/"下的文档,可以使用以下掩码集:

include https://www.mysite.com/faqs/ 
exclude *

您还可以在URL掩码脚本中使用常规表达式,如下例所示:

include regexp ^https://www\.mysite\.com.*/faqs/.*$ 
exclude *

请参阅常规表达式

脚本化URL蒙版将按照您在URL Masks字段中输入它们的顺序进行考虑。 当文档URL与掩码匹配时,该文档会根据掩码的类型被包括或排除。 如果文档的URL与任何URL掩码不匹配,则仅当其MIME类型为“text/html”时,文档才包含。 所有其他MIME类型均被排除。

添加URL掩码脚本

指定URL包括蒙版和排除蒙版,以更改仅存在于网站特定部分的文档的内容。

在访客看到URL蒙版设置的效果之前,请重新构建站点索引。

添加URL掩码脚本

  1. 在产品菜单中,单击​Settings > Filtering > URL Masks

  2. (可选)在URL Masks页面的Test URL字段中,输入网站上文档的URL,然后单击​Test​以根据筛选脚本和蒙版测试该URL。

    将下载测试URL文档,它用作过滤脚本的STDIN输入。 然后运行筛选、初始化和终止脚本。 如果过滤脚本中有任何STDOUT输出,则输出将显示在新的浏览器窗口中。

    单击​Test​不更新并保存脚本。

  3. 在URL Masks字段中,每行输入一个URL掩码。

  4. (可选)单击​Check Syntax,通过运行筛选、初始化和终止脚本,对URL掩码执行快速语法检查。

    Check Syntax 不更新和保存脚本。

  5. 单击 Save Changes.

  6. (可选)如果要预览结果,请重新构建分阶段站点索引。

    请参阅配置分阶段网站的增量索引

  7. (可选)在URL Masks页面上,执行下列任一操作:

关于筛选中的内容类型

允许您选择要为此帐户筛选的内容类型。

在所选内容类型内找到的文本将转换为HTML,然后使用筛选脚本中指定的脚本进行处理。

请参阅关于筛选脚本

您可以从中选择的内容类型包括:

  • PDF文档
  • 文本文档
  • AdobeFlash电影
  • Microsoft Word文件
  • Microsoft Office文件(OpenXML)
  • Microsoft Excel文件
  • Microsoft Powerpoint文件
  • MP3音乐文件中的文本

在客户看到“内容类型”设置的效果或对设置的更改之前,您必须重新构建站点索引。

选择筛选的内容类型

选择要传递给筛选脚本中指定的脚本的内容类型。

请参阅关于筛选脚本

选择已过滤的内容类型

  1. 在产品菜单中,单击​Settings > Filtering > Content Types

  2. 在Content Types页面上,检查要传递到过滤器脚本的内容类型。

  3. 单击 Save Changes.

  4. (可选)如果要预览结果,请重新构建分阶段站点索引。

    请参阅配置分阶段网站的增量索引

  5. (可选)在Content Types页面上,执行下列任一操作:

在此页面上