使用“筛选”菜单可使用在索引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行 |
使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用3。 |
您可以在这些脚本中使用局部变量、全局变量或同时使用这两个变量。 所有全局变量前面都有命名空间“main::”。 启动筛选脚本时,其环境包含以下标准文件句柄:
此外,您还可以使用_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 索引操作和相关值包括:
|
$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;
子例程在初始化脚本中定义。 他们不需要明确的“main::”命名空间: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
可采用以下值:
在该示例中,测试$main::search_content_class
的“word”将匹配三个可能的content-type值中的任意一个。
如果从筛选脚本中没有将任何内容打印到STDOUT,则文档会完全按下载方式使用。 即,如果您不需要更改文档中的任何内容,则无需将该文档的STDIN复制到STDOUT。
如果要从文档中删除所有文本,请打印有效的文件STDOUT。 例如,要从HTML文档中完全删除所有文本,请执行以下操作:print "<html></html>";
过滤脚本是一个Perl脚本,它针对从您的网站下载的每个文档运行。
将过滤脚本与初始化脚本、终止脚本和URL掩码脚本结合使用。
请确保重新构建站点索引,以便您的客户能够看到过滤脚本的结果。
请参阅配置分阶段网站的增量索引。
添加筛选脚本
在产品菜单上,单击Settings > Filtering > Filtering Script。
(可选)在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不会更新并保存您的筛选脚本。
在Filtering Script字段中,粘贴您的脚本。
(可选)单击Check Syntax,通过运行筛选、初始化和终止脚本对脚本执行快速语法检查。
Check Syntax 不更新和保存脚本。
单击 Save Changes.
(可选)如果要预览结果,请重新构建分阶段站点索引。
请参阅配置分阶段网站的增量索引。
(可选)在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行 |
使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用3。 |
您可以在这些脚本中使用局部变量、全局变量或同时使用这两个变量。 所有全局变量前面都有命名空间“main::”。 启动初始化脚本时,其环境包含以下标准文件句柄:
此外,您还可以使用_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;
子例程在初始化脚本中定义。 他们不需要明确的“main::”命名空间: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
可采用以下值:
在该示例中,测试$main::search_content_class
的“word”将匹配三个可能的content-type值中的任意一个。
如果从筛选脚本中没有将任何内容打印到STDOUT,则文档会完全按下载方式使用。 即,如果您不需要更改文档中的任何内容,则无需将该文档的STDIN复制到STDOUT。
如果要从文档中删除所有文本,请打印有效的文件STDOUT。 例如,要从HTML文档中完全删除所有文本,请执行以下操作:print "<html></html>";
初始化脚本是Perl脚本,在编制任何文档索引之前运行一次。
将初始化脚本与过滤脚本、终止脚本和URL掩码脚本结合使用。
请确保重新构建站点索引,以便您的客户能够看到初始化脚本的结果。
请参阅配置分阶段网站的增量索引。
添加初始化脚本
在产品菜单上,单击Settings > Filtering > Initialization Script。
(可选)在Initialization Script页面的Test URL字段中,输入网站上文档的URL。
单击测试选项可查看对原始HTML文本的更改。
请参阅添加筛选脚本下的筛选选项表。
单击Test以针对筛选脚本和URL掩码进行测试。
单击Test不会更新并保存您的初始化脚本。
在Initialization Script字段中,粘贴您的脚本。
(可选)单击Check Syntax,通过运行筛选、初始化和终止脚本对脚本执行快速语法检查。
Check Syntax 不更新和保存脚本。
单击 Save Changes.
(可选)如果要预览结果,请重新构建分阶段站点索引。
请参阅配置分阶段网站的增量索引。
(可选)在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行 |
使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用3。 |
您可以在这些脚本中使用局部变量、全局变量或同时使用这两个变量。 所有全局变量前面都有命名空间“main::”。 启动终止脚本时,其环境包含以下标准文件句柄:
此外,您还可以使用_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;
子例程在初始化脚本中定义。 他们不需要明确的“main::”命名空间: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
可采用以下值:
在该示例中,测试$main::search_content_class
的“word”将匹配三个可能的content-type值中的任意一个。
如果从筛选脚本中没有将任何内容打印到STDOUT,则文档会完全按下载方式使用。 即,如果您不需要更改文档中的任何内容,则无需将该文档的STDIN复制到STDOUT。
如果要从文档中删除所有文本,请打印有效的文件STDOUT。 例如,要从HTML文档中完全删除所有文本,请执行以下操作:print "<html></html>";
终止脚本是一个Perl脚本,在所有文档编入索引后运行一次。
将终止脚本与过滤脚本、终止脚本和URL掩码脚本结合使用。
请确保重新构建站点索引,以便您的客户能够看到初始化脚本的结果。
请参阅配置分阶段网站的增量索引。
添加终止脚本
在产品菜单上,单击Settings > Filtering > Termination Script。
(可选)在Termination Script页面的Test URL字段中,输入网站上文档的URL。
单击测试选项可查看对原始HTML文本的更改。
请参见添加筛选脚本下的筛选选项表。
单击Test以针对筛选脚本和URL掩码进行测试。
单击Test不会更新并保存您的终止脚本。
在Termination Script字段中,粘贴您的脚本。
(可选)单击Check Syntax,通过运行初始化、筛选和终止脚本来对脚本执行快速语法检查。
Check Syntax 不更新和保存脚本。
单击 Save Changes.
(可选)如果要预览结果,请重新构建分阶段站点索引。
请参阅配置分阶段网站的增量索引。
(可选)在Termination Script页面上,执行下列任一操作:
通过筛选,您可以在对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掩码脚本
在产品菜单上,单击Settings > Filtering > URL Masks。
(可选)在URL Masks页面的Test URL字段中,输入网站上某个文档的URL,然后单击Test以根据筛选脚本和蒙版测试该URL。
将下载测试URL文档,它用作过滤脚本的STDIN输入。 然后运行筛选、初始化和终止脚本。 如果筛选脚本中有任何STDOUT输出,则输出将显示在新的浏览器窗口中。
单击Test不会更新并保存脚本。
在URL Masks字段中,每行输入一个URL掩码。
(可选)单击Check Syntax,通过运行筛选、初始化和终止脚本,对URL掩码执行快速语法检查。
Check Syntax 不更新和保存脚本。
单击 Save Changes.
(可选)如果要预览结果,请重新构建分阶段站点索引。
请参阅配置分阶段网站的增量索引。
(可选)在URL Masks页面上,执行下列任一操作:
允许您选择要为此帐户筛选的内容类型。
在所选内容类型内找到的文本将转换为HTML,然后使用在筛选脚本中指定的脚本进行处理。
请参阅关于筛选脚本。
您可以从中选择的内容类型包括:
在“内容类型”设置的效果或对设置所做的更改对客户可见之前,必须重新构建您的站点索引。
选择要传递给在筛选脚本中指定的脚本的内容类型。
请参阅关于筛选脚本。
要选择筛选的内容类型,请执行以下操作
在产品菜单上,单击Settings > Filtering > Content Types。
在Content Types页面上,检查要传递到筛选器脚本的内容类型。
单击 Save Changes.
(可选)如果要预览结果,请重新构建分阶段站点索引。
请参阅配置分阶段网站的增量索引。
(可选)在Content Types页面上,执行下列任一操作: