使用“筛选”菜单,可使用在索引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::”为前缀。 启动筛选脚本时,其环境包含以下标准文件句柄:
此外,还可以使用_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;
子例程在初始化脚本中定义。 他们不需要明确的“主::”命名空间: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行 |
使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。 |
单击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行 |
使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。 |
您可以在这些脚本中使用局部变量、全局变量或同时使用它们。 所有全局变量都以命名空间“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;
子例程在初始化脚本中定义。 他们不需要明确的“主::”命名空间: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行 |
使用统一的输出格式,显示上下文的行(整数),如果未指定行,则使用三行。 |
您可以在这些脚本中使用局部变量、全局变量或同时使用它们。 所有全局变量都以命名空间“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;
子例程在初始化脚本中定义。 他们不需要明确的“主::”命名空间: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页面上,执行下列任一操作: