您可以使用彩块化来自定义您的展示层,并为用户提供向导式搜索功能,让他们能够深入查看搜索结果。
例如,假设某个网站的访客销售工具,并搜索扳手。 公司可以使用两个方面:一个用于指定找到的所有品牌扳手,另一个用于指定所有扳手尺寸。 客户可以单击相应方面中的任何品牌或尺寸,缩小结果范围并快速找到所需的正确扳手。
您可以基于任何现有元数据定义创建彩块化。 如果在元数据中将facet定义为日期类型,则它将显示为日期范围facet。
Staged Facets页上的表显示了组成每个添加的facet的设置的一般概述。 您可以添加新彩块化,以及编辑或删除现有彩块化。 您可以使用页面右上角附近的History还原您对facet所做的任何更改。
默认情况下,Facet设置会暂存,以便您在实时推送任何更改之前对其进行测试。
请参阅关于暂存。
您可以使用View Live Settings将暂存设置与当前的实时设置进行比较。 使用View Staged Settings返回临时区。 对于已暂存的项目,设置的实时版本为只读。 因此,您可以通过实时推送暂存设置来操纵它。 在对已转移的facet所做的任何更改感到满意后,单击Push Live将其实时推送。
在元数据中定义为日期类型的彩块化与其他彩块化不同。 它们不被视为一组值,而是被视为日期范围、开始日期、结束日期或两者。
日期范围facet的值为开始日期,后跟“BTW”(对于“between”),后跟结束日期。 日期采用以下两种格式:
mm-dd-yyyy
yyyy/mm/dd
需要4位数的年数。 必须至少有一个开始日期或结束日期,但两者都不是必需的。 例如,“12/1/2007BTW1/4/2009”是指2007年12月1日至2009年1月4日之间的所有日期。 但是,"1-1-2005BTW"指自2005年1月1日以来的所有日期。
您可以使用演示文稿模板标记<guided-facet-value/>
获取日期范围facet的值,如普通facet。 目前,需要JavaScript才能允许用户输入要搜索的日期范围。 例如,您可以从两个输入字段输入开始和结束日期。 然后,您可以验证输入,并将新facet的值(从两个输入字段构建)和facet名称追加到现有URL。
请参阅演示文稿模板标记。
以下代码示例是有关如何在页面上显示日期范围的示例。 如果选中,则显示现有日期范围;否则,它显示一个简单的输入表单。 提交表单后,将执行简单的验证。 然后,它将浏览器发送到包含两个新参数的新URL:
q#
-表示从两个输入字段组合的选定日期范围。x#
-命名facet。在此示例中,日期范围facet的名称为“modified”。代码中的replace(/%2F/ig,%20'~2F'?lang=zh-Hans)
部分是必需的,因为出于安全原因,Apache不允许URL路径中的%2F
部分,而且当使用SEO URL时,查询在URL路径中。 因此,/
将编码为~2F
而不是%2F
,因为它通常位于URL中。
<div class="date_range">
<p>Date Range</p>
<guided-if-facet-selected gsname="modified">
<guided-facet-values gsname="modified">
<script>
var modified_daterange= '<guided-facet-value />'.split(/BTW/) ;
if (modified_daterange[0]=='') modified_daterange[0]= '--/--/----' ;
if (modified_daterange[1]=='') modified_daterange[1]= '--/--/----' ;
document.write('From: ' + modified_daterange[0]) ;
document.write('<br>To: ' + modified_daterange[1]) ;
</script>
</guided-facet-values>
<guided-else-facet-selected>
<form action="#">
From: <input name="dateFrom" size=10>
<br>To: <input name="dateTo" size=10>
<br><input type="button" value="Go" onclick="goClick(this.form)">
</form>
<script>
function goClick(f) {
if (f.dateFrom.value=='' && f.dateTo.value=='') {
alert('You must enter either a From: date or a To: date.') ;
return ;
}
if ( f.dateFrom.value!='' && !f.dateFrom.value.match(/^\d+[\/\-]\d+[\/\-]\d\d\d\d$/) ) {
alert('From: date must be in "mm/dd/yyyy" or "mm-dd-yyyy" format.') ;
return ;
}
if ( f.dateTo.value!='' && !f.dateTo.value.match(/^\d+[\/\-]\d+[\/\-]\d\d\d\d$/) ) {
alert('To: date must be in "mm/dd/yyyy" or "mm-dd-yyyy" format.') ;
return ;
}
// Note that "/" is encoded as "~2F" instead of "%2F" to avoid Apache 404 error.
var new_url= '<guided-current-path />&<guided-query-param-name gsname="q#" offset="0" />='
+ encodeURIComponent(f.dateFrom.value).replace(/%2F/ig,%20'~2F'?lang=zh-Hans) + 'BTW'
+ encodeURIComponent(f.dateTo .value).replace(/%2F/ig,%20'~2F'?lang=zh-Hans)
+ '&<guided-query-param-name gsname="x#" offset="0" />=modified' ;
location.href= new_url ;
}
</script>
</guided-if-facet-selected>
</div>
嵌套彩块化是显示多个类别级别的彩块化,如下所示:
“女性”和“男性”类别位于顶部或父级彩块中。 子类别(如附件和鞋类)位于较低或子小面中。
当前支持的嵌套facet深度为2,但可以位于向下钻取列表的任意位置。
以下是各种类型的嵌套彩块化的行为:
嵌套彩块化类型的行为 |
行为 |
---|---|
普通 |
普通嵌套facet的行为是,如果其他facet缩小搜索范围,它会收缩。 如果选中嵌套的彩块化,它会向下缩小以选择。 如果选择了父彩块化,则只有该彩块化与其所有其余子彩块化一起显示。 如果选择了子彩块化,则彩块化将仅显示选定的父彩块化和选定的子彩块化。 |
置顶 |
粘滞嵌套facet的行为是它尝试根据其他facet的状态或搜索条件尽可能保持facet的打开状态。 如果选择了子彩块面,则会计入粘滞深度。 |
多选 |
多选小平面的行为是保持小平面打开。 除非facet是类别嵌套facet的“父项”,否则任何新选择都会尝试擦除所有其他facet选择。 在本例中,“父代”指类别彩块化,而不是嵌套彩块化的顶级类别。 |
类别多选 |
类似于多选嵌套彩块化类型,但有以下例外:
|
另请参阅关于Facet边栏。
您可以添加彩块化以自定义您的展示层,并为客户提供向导式搜索,让他们深入查看搜索结果。
Facets页上的facets表显示了组成单个facet的设置的摘录。 您可以添加新彩块化,以及编辑或删除现有彩块化。 您对彩块化所做的任何更改都可以使用历史记录功能进行还原。
请确保在演示文稿模板中引用facet,以便它在网站上可见。
另请参阅关于Facet边栏。
添加新彩块化
在添加新facet之前,请确保您已经完成以下操作,然后再继续执行下一步:
在产品菜单上,单击Design > Navigation > Facets.
在Facets页面上,单击Add New Facet。
在Add Facet页面上,设置所需的选项。
这些设置影响facet的行为和默认表示。 您可以通过演示文稿模板的设置覆盖其中的一些设置。
如果在元数据中将彩块化定义为日期类型,则彩块化将显示为日期范围。
请参阅日期范围彩块化。
根据您选择的facet选项,并非所有选项都可用。
选项 |
描述 |
---|---|
彩块化名称 |
标识给定facet的名称。
注意: 您只能基于现有用户定义的元数据拥有一个彩块化。 如果下拉列表中没有可用的彩块化,则您必须先定义一些元数据。 请参阅添加新的meta标记字段。 要基于字段表构建facet,请使用自定义facet名称并指定字段表名。 |
显示标签 |
设置可在痕迹导航中使用的facet的标签,而不是元数据字段名称(带有 <guided-breadcrumb-label> 标签)或独立值(带有 <guided-facet-display-name> 标签)。 |
行为 |
设置三个facet行为之一。
|
始终显示 |
对于正常或粘滞彩块面,请设置该块面以始终对客户可见。 仅当您从行为下拉类别中选择了普通、列表或粘滞时,此选项才可用。 |
Facet的父项 |
只有在从行为下拉类别中选择列表或类别多选时,此选项才可用。 指示类别facet的父代是什么。 类别父彩块化中的选定项目用于缩小当前类别彩块化中可用的选项。 当客户与类别facet交互时,父彩块化不会取消选择。 可以指定多个逗号分隔的父项。 |
粘滞深度 |
仅当您从行为下拉列表中选择了粘性时,此选项才可用。 设置在向下钻取期间保持打开的选项数。 |
长度阈值 |
设置在项目数中定义的小平面的垂直长度(1-9999)。 如果演示文稿模板设置得当,您可以使用此设置提供“显示更多……” 链接,或确定何时将facet抛入可滚动div,依此类推。 |
截断长度阈值 |
截断给定阈值后的facet中的项数。 某些实现中有数千个项目。 通过线路发送所有数据可能非常昂贵。 您可以使用此设置将facet裁切到可管理的级别。 排序后,facet将被截断。 |
最大值宽度 |
指定对facet值字符串长度的限制(1-999)。 当要将facet置于固定宽度布局中并防止字符串换行时,此选项很有用。 默认情况下,字符串设置为比阈值短3个字符,这样可以添加省略号。 |
值扩展 |
指定要用于指示小平面值被截断的字符串。 默认情况下,字符串“...” 。 |
Delimiter(分隔符) |
指定用于应用于facet的任何分隔值分隔列表的分隔符。 使用的分隔符与在元数据中定义的分隔符相同,该元数据是facet所基于的。 默认分隔符为逗号。 但是,您可以使用任何符合XML的值。 |
排序 |
指定您希望如何在您的网站上对彩块化进行排序。 您可以按以下方式对彩块化进行排序。 如果需要,最多可以组合五种排序方式。
|
Facet的别名 |
要支持可能已在野外存在的现有搜索URL,您可以使用facet别名将旧参数名称映射到已修改的名称,或仅创建具有不同名称的facet。 别名仅应用于传入请求,不用于创建facet链接。 |
彩块化边栏名称 |
如果您决定按字母顺序、计数或自定义方法对彩块化进行排序,则彩块化边栏的名称。 请参阅关于 Facet Rail。 |
订购 |
仅当您从排序下拉列表中选择了排序时,此选项才可用。 允许您定义指定使用顺序的值的分隔列表。 |
附加额外内容 |
仅当您从排序下拉列表中选择了排序时,此选项才可用。 如果这些值不在有序列表中,则这些值会附加到结尾。 |
《鬼魅浮生》 |
仅当您从排序下拉列表中选择了排序时,此选项才可用。 如果缺少由有序列表指定的值,则此选项会将facet中每个缺失的项标记为“ghost”,以便以不同方式显示这些项。 |
嵌套彩块化 |
嵌套的彩块化显示其类别及其子代的类别。 它只能显示两个类别的深度,但可以位于向下钻取的任意位置。 此facet的数据必须遵循描述两个级别类别的约定。 例如,facet值可以是“shoes:boots”,其中父类别为“shoes”,子类别为“boots”。 “:”用作分隔符。 有关更改分隔符的详细信息,请参阅下面的嵌套分隔符。 要以此格式生成数据,您可以使用过滤器脚本组合两个现有类别。 您可以将“正常”、“类别”和“粘滞”行为与嵌套彩块化相结合。 |
嵌套父代名称 |
此下拉列表仅在您选择嵌套彩块化时可用。 允许您选择表示父类别的字段。 此字段在搜索期间用于匹配父类别。 |
嵌套子名称 |
此下拉列表仅在您选择嵌套彩块化时可用。 允许您选择表示子类别的字段。 此字段在搜索期间用于匹配子类别。 |
嵌套彩块化分隔符 |
仅当您选择了嵌套彩块化时,此选项才可用。 此处输入的字符用于分析父类别和子类别的数据。 例如,如果“:”用作分隔符,而父代为“shoes”,而子代为“boots”,则它希望数据的格式设置为“shoes:boots”。 |
分割阈值 |
仅当您从排序下拉列表中选择了拆分时,此选项才可用。 使用“拆分”排序时,拆分阈值定义将facet拆分为两个单独列表的计数。 计数大于或等于阈值的值保留在顶部,而低于阈值的值移到底部。 |
最高值 |
仅当您从排序下拉列表中选择中断时,此选项才可用。 使用分隔排序时,该值的分隔列表始终放在列表的顶部。 允许使用常规表达式,但它们应位于大括号或大括号中,例如:{^新。*?},{^非常新。*} |
最低值 |
仅当您从排序下拉列表中选择中断时,此选项才可用。 使用分隔排序时,该值的分隔列表始终位于列表的底部。 允许使用常规表达式,但它们应位于大括号或大括号中,如下例所示:{^Old。*?},{^非常旧。*} |
单击 Add.
(可选)在Facets页面上,执行下列操作之一:
您可以添加嵌套彩块化以显示多个级别的类别。
在创建嵌套彩块化时,请牢记以下几点:
每个嵌套facet都需要一个用户定义的元标记字段。
嵌套彩块化由父彩块化和子彩块化两个其他彩块化组成。 它们可以是单值彩块化或多值彩块化。 不允许混合单值彩块化和多值彩块化。
您需要确定此facet是否将用于搜索字段表。 字段表需要嵌套facet本身及其合成facet。
考虑使用JSON实现嵌套彩块化;它更简单。
本主题将嵌套facet称为facet n1。
添加一个新的meta标记字段,该字段专用于嵌套facet的保存日期。 它可以是多值字段或单值字段。
在产品菜单中,单击Settings > Metadata > Definitions。
在Definitions页面上,单击Add New Field。
在Add Field页面上,设置所需的选项。
请参阅添加新的元标记字段。
单击 Add.
(可选)如果要预览结果,请重新构建分阶段站点索引。
请参阅配置分阶段网站的增量索引。
其余任务将此元标记字段称为n1。
添加筛选脚本以将原始彩块化组合为以下格式:<parent_value><nested_delimiter><child_value>
。
请参阅添加筛选脚本。
以下是使用上述格式的meta标签字段n1的值示例
Womens:Handbags
Womens:Dresses
Mens:Accessories
Mens:Footwear
创建或编辑筛选脚本后,请测试该脚本。 如果看起来正确,请根据需要重新索引您的帐户。 可以使用Index Overview检查索引。
以下示例假定筛选脚本初始化中包含一些标准咨询库。 请记住,每个帐户都不同,因此您的过滤脚本应反映您自己帐户的必要要求。
多值筛选脚本的示例
my $doc;
{
# Slurp all the data into $doc
local $/;
undef $/;
$doc = <>;
}
# Create n1 field
if ( $doc =~ m{<meta\s+name="t1"\s+content="([^\"]*)"}is )
{
my @t1arr = split(/\|/, $1);
if (scalar @t1arr > 0)
{
if ( $doc =~ m{<meta\s+name="t2"\s+content="([^\"]*)"}is )
{
my @t2arr = split(/\|/, $1);
if ( scalar @t2arr > 0 )
{
my $max = ((scalar @t1arr) < (scalar @t2arr)) ? (scalar @t1arr) : (scalar @t2arr);
for (my $i = 0; $i < $max; $i++)
{
$t1arr[$i] .= ":" . $t2arr[$i];
}
}
}
my $output = join( '|', @t1arr );
$doc =~ s{</head>}{<meta name="n1" content="$output" />\b</head>}is;
}
}
# END: n1 field
单值筛选脚本的示例
# This is a complete example.
# This script is designed for index connector where each record
# in the XML file is converted into a fake HTML page filled with
# meta data tags.
my $doc;
{
# Slurp all the data
local $/;
undef $/;
$doc = <>;
}
# All legitimate index connector data has key in its URL.
# Process the page if and only if it is coming from index connector and
# it is not the first entry point page. Entry point pages don't have key
# in the URL.
if ($main::search_url =~ /\?key=/) {
my $meta = {};
# Mine and scrape the meta fields from the page
my @lines = split(/\n/,$doc);
foreach my $line (@lines)
{
if ($line =~ m{<meta name="(.*?)" content="(.*?)" />})
{
$meta->{lc($1)} = $2;
}
}
# Combined t1,t2 and t2,t3, and t3,t4 together.
# Assign them respectively to n1, n2, and n3.
my ($t1, $t2, $t3, $t4);
my %meta2;
$t1 = $meta->{'t1'};
$t2 = $meta->{'t2'};
$t3 = $meta->{'t3'};
$t4 = $meta->{'t4'};
if (defined $t1 && $t1) {
$meta2{'n1'} = $t1;
if (defined $t2 && $t2) {
$meta2{'n1'} .= ":" . $t2;
$meta2{'n2'} = $t2;
if (defined $t3 && $t3) {
$meta2{'n2'} .= ":" . $t3;
$meta2{'n3'} = $t3;
if (defined $t4 && $t4) {
$meta2{'n3'} .= ":" . $t4;
}
}
}
}
foreach my $stuff ( keys %meta2 )
{
my $v = $meta2{$stuff};
$doc =~ s{</head>}{<meta name="$stuff" content="$v" />\n</head>};
}
}
# Do some ranking stuff here
ws_insert_static_rank_meta_tag(\$doc, "RANK");
# Prints the entire page back out.
print $doc;
在产品菜单中,单击Design > Navigation > Facets。
在Facets页面上,单击Add New Facet。
在Add Facet页面上,设置以下选项:
在Facet Name下拉列表中,选择您在任务1中定义的meta标记字段。 如果使用搜索字段表,请在下拉列表中选择custom,然后输入facet的自定义名称。
检查Nested Facet以“开启”嵌套彩块化。
在Nested Parent Name和Nested Child Name下拉列表中,选择可以使用的meta标记字段。 如果使用搜索字段表,请选择custom并输入facet的自定义名称。
在Nested Facet Delimiter字段中,指定要使用的分隔符,如“:”(冒号)。 请勿将其与多值分隔符混淆。 两个分隔符应不同。
如果设置facet的行为Category,则可指定facet的父项(请勿将父项与嵌套facet父项混淆)。 通常,永远不要将其他嵌套facet的名称用作类别父项。 请改用组成该嵌套facet的各个facet。
设置您需要的任何其他彩块化选项。
请参阅添加新facet。
单击 Add.
在产品菜单中,单击Settings > Searching > Searches。
在Searches页面上,单击要更新的搜索类型名称上的Edit。
sp_field_table
需要字段n1、t1和t2。
如果使用字段表,则应编辑sp_field_table
参数。 或者,您也可以使用查询清理规则或预搜索规则在其他位置完成此操作。
请参阅添加查询清理规则。
请参阅添加新的预搜索规则。
单击 Save Changes.
在产品菜单中,单击Design > Templates。
在Templates页面上,单击Add New Template。
在Add Template对话框中,指定传输模板文件的名称。
在New Template Type下拉列表中,选择Transport。
单击 Add.
在Templates页面上,单击刚刚添加的传输模板文件名。
在传输模板的Template Editor页面上,包括来自字段n1的数据。 请参阅以下示例。
返回嵌套facet数据的XML 示例XML示例需要指定将哪个字符用作facet值之间的分隔符。在这种情况下,它是管道(|)。
<facet name="n1">
<values delimiter="|"><search-field-value-list name="n1" quotes="no" separator="|" sortby="values" data="values" /></values>
<counts><search-field-value-list name="n1" quotes="no" sortby="values" data="results" /></counts>
</facet>
返回嵌套facet数据的JSON示例
{
"name" : "n1",
"values" : [ <search-field-value-list name="n1" quotes="yes" sortby="values" data="values" encoding="json"/>],
"counts" : [<search-field-value-list name="n1" quotes="no" sortby="values" data="results" />]
},
在产品菜单中,单击Design > Templates。
在Templates页面上,单击Add New Template。
在Add Template对话框中,指定演示文稿模板文件的名称。
在New Template Type下拉列表中,选择Presentation。
单击 Add.
在Templates页面上,单击刚刚添加的演示文稿模板文件名称。
在演示文稿模板的Template Editor页面上,添加与预期输出集成的HTML标记。
您可以使用以下标记显示子标记:
如果子项存在标记 <guided-if-facet-value-has-children><guided-else-facet-value-selected></guided-if-facet-value-has-children>
子值标记 <guided-facet-value-children></guided-facet-value-children>
“子值”标签的行为方式与普通的向导facet-value标签不同。 包装器标签强制所有包含<guided-facet-value>
标签遍历子代facet值而不是父代facet值。 同样,其他引导facet标签(如撤消标签)也遵循相同的操作。 最好在<guided-if-facet-value-has-children>
标记中使用它们。
以下是带有HTML标记的演示文稿模板的示例。
<guided-facet gsname="n1">
<guided-if-facet-selected>
<guided-facet-values>
<guided-if-facet-value-selected>
<li><span class="selected"><guided-facet-value /></span><guided-facet-value-undo-link gsname="n1">X</guided-facet-value-undo-link></li>
<guided-if-facet-value-has-children>
<ul>
<guided-facet-value-children>
<guided-if-facet-value-selected>
<li><span class="selected"><guided-facet-value /></span><guided-facet-value-undo-link gsname="n1">X</guided-facet-value-undo-link></li>
<guided-else-facet-value-selected>
<li><guided-facet-link title='<guided-facet-value />'><guided-facet-value /> (<guided-facet-count />)</guided-facet-link> </li>
</guided-if-facet-value-selected>
</guided-facet-value-children>
</ul>
</guided-if-facet-value-has-children>
<guided-else-facet-value-selected>
<li><guided-facet-link title='<guided-facet-value />'><guided-facet-value /> (<guided-facet-count />)</guided-facet-link> </li>
<guided-if-facet-value-has-children>
<ul>
<guided-facet-value-children>
<li><guided-facet-link title='<guided-facet-value />'><guided-facet-value /> (<guided-facet-count />)</guided-facet-link> </li>
</guided-facet-value-children>
</ul>
</guided-if-facet-value-has-children>
</guided-if-facet-value-selected>
</guided-facet-values>
<guided-else-facet-selected>
<guided-facet-values>
<guided-if-facet-value-selected>
<li><span class="selected"><guided-facet-value /></span><guided-facet-value-undo-link gsname="n1">X</guided-facet-value-undo-link></li>
<guided-if-facet-value-has-children>
<ul>
<guided-facet-value-children>
<li><guided-facet-link title='<guided-facet-value />'><guided-facet-value /> (<guided-facet-count />)</guided-facet-link> </li>
</guided-facet-value-children>
</ul>
</guided-if-facet-value-has-children>
<guided-else-facet-value-selected>
<li><guided-facet-link title='<guided-facet-value />'><guided-facet-value /> (<guided-facet-count />)</guided-facet-link> </li>
<guided-if-facet-value-has-children>
<ul>
<guided-facet-value-children>
<li><guided-facet-link title='<guided-facet-value />'><guided-facet-value /> (<guided-facet-count />)</guided-facet-link> </li>
</guided-facet-value-children>
</ul>
</guided-if-facet-value-has-children>
</guided-if-facet-value-selected>
</guided-facet-values>
</guided-if-facet-selected>
</guided-facet>
如果在搜索中使用痕迹导航,则需要将行为设置为转到。
您可以编辑已添加的任何facet的设置。
请确保在演示文稿模板中引用facet,以便它在网站上可见。
编辑彩块化
在产品菜单上,单击Design > Navigation > Facets.
在Facets页面上,单击facet名称最右侧的Edit。
在Edit Facet页面上,设置所需的选项。
请参见添加新facet下的选项表。
单击 Save Changes.
(可选)在Facets页面上,
您可以删除已添加的任何彩块化。
删除彩块化