Tags 是否存在带有sitecore标记的层次结构

Tags 是否存在带有sitecore标记的层次结构,tags,sitecore,Tags,Sitecore,是否可以为sitecore标记建立层次结构 例如,运输标签 自行车 _女子自行车 _男式自行车 _儿童自行车 汽车 _福特 _大众汽车 _标致 当我搜索福特时,我想把所有的物品都标记为福特。当我搜索汽车时,我想得到所有标记为Car、Ford、Volkswagen和/或Peugot的物品 当一个项目被标记为福特时,它也不需要单独标记为汽车 (编辑以提供更好的解释)标记是一种以非层次化方式构建内容的方法。所以应用它们不是按层次进行的。但是您可以创建多个标记存储库来存储您的标记。您可以在这篇内容丰富的

是否可以为sitecore标记建立层次结构

例如,运输标签

自行车

_女子自行车

_男式自行车

_儿童自行车

汽车

_福特

_大众汽车

_标致

当我搜索福特时,我想把所有的物品都标记为福特。当我搜索汽车时,我想得到所有标记为Car、Ford、Volkswagen和/或Peugot的物品

当一个项目被标记为福特时,它也不需要单独标记为汽车


(编辑以提供更好的解释)

标记是一种以非层次化方式构建内容的方法。所以应用它们不是按层次进行的。但是您可以创建多个标记存储库来存储您的标记。您可以在这篇内容丰富的博文(在“创建您自己的标签”下)中看到一个例子:

标签是一种以非层次方式构建内容的方法。所以应用它们不是按层次进行的。但是您可以创建多个标记存储库来存储您的标记。您可以在这篇内容丰富的博文(在“创建您自己的标记”下)中看到一个示例:

在Sitecore中使用Sitecore项目bucket功能,
sitecore7.0及更高版本中已有搜索功能,通过使用sitecore搜索Tag1,您可以使用sitecore中的所有realted Tag1内容,
sitecore7.0及更高版本中已经存在搜索功能,通过使用sitecore搜索标记1,可以提供所有实时标记1内容

现成的sitecore搜索基础结构不直接支持此功能,因为它不知道标记的树结构如何。但是,可以扩展Lucene集成以启用它

首先,一些假设:

1) 标签 我假设您的Sitecore数据中有一个标记内容树。每个标记都是基于“标记”模板创建的,因此可以将其识别为标记。例如,您的内容树可能如下所示:

Tags               --> Uses "Folder" template
   Car             --> Uses "Tag" template
     Ford          --> Uses "Tag" template
     Volkswagen    --> Uses "Tag" template
   Bike            --> Uses "Tag" template
     Mens Bike     --> Uses "Tag" template
     Womens Bike   --> Uses "Tag" template
2) 应用标签 您的内容项(即被标记的内容项)有一个TreeList(或TreeListX)字段,其数据源是来自点#1的“标记”文件夹。这允许编辑器根据自己的需要选择标记。我假设此字段称为“AppliedTags”

有了这一点:

您需要实现一些代码,这意味着在构建搜索索引时,它会附加编辑器使用的标记以及该标记项的任何父标记。因此,如果编辑附加了“福特”,那么“汽车”也会被放入Lucene索引中

您不需要指定正在使用的Sitecore的版本,但对于最新版本,总体思路是相同的。但是,旧版本中存在一些技术差异

在Sitecore 7.x(可能也是8)中,您需要创建一个“计算索引字段”。这基本上是Sitecore在将项目数据传递给Lucene进行索引之前运行的一些自定义代码。您可以使用此自定义代码为Lucene计算一个新字段,该字段包含扩展的标记集。这些链接提供了SC7中计算字段的概述:(还有更多内容-谷歌了解更多详细信息)

调用时,自定义代码将接收当前正在编制索引的Sitecore项。在伪代码中,您的计算字段代码可以:

If the item being processed has an "AppliedTags" field
  Create a list to store results
  For each Tag item specified in the current Item's "AppliedTags" field
      Run a Sitecore Query API to find any ancestors of that Tag which are themselves Tags
      Add the IDs of each of these returned items to the results list
  Return the results list
需要测试项目是否具有“AppliedTags”字段,因为您的代码将针对正在为此搜索索引处理的每个项目运行。因此,当代码遇到模板中没有此字段的项时,代码将中断。我假设您的内容树中有不能包含标记的项目

现在Lucene索引可以包含所有应用标记及其父标记的数据,因此现在可以得到您想要的搜索结果。它还可以处理更深层次的标记树——尽管要小心,因为标记树越大,索引时需要更多的处理

您需要修改Lucene的Sitecore配置,以便将计算字段添加到搜索索引的字段列表中。您可以在标准Sitecore搜索文档中找到这方面的说明,但我假设新的索引字段名为“ExpandedTags”

完成后(并重建索引以获取所有新数据),您可以编写一个Sitecore搜索查询,显示
在“ExpandedTags”索引项中搜索“Car”
,它还将返回最初标记为“Ford”和“Volkswagen”的内容

在Sitecore 6.5/6.6中,我不认为您可以不费吹灰之力就可以做到这一点,但搜索基础设施有一个开源扩展:

这个项目的“crawler”部分允许使用基于
scSearchContrib.crawler.DynamicFields.BaseDynamicField
的类来完成与上面相同的事情。如果您使用这个扩展来生成搜索索引,那么您可以应用与上面类似的定制方法。这里有一个使用动态字段的简单示例:


但是,运行此搜索框架将需要一些额外的工作,以确保Sitecore使用SearchContrib框架构建索引。上面链接的github数据中提供了示例配置补丁。

开箱即用的Sitecore搜索基础结构不直接支持此功能,因为它不知道标记的树结构如何。但是,可以扩展Lucene集成以启用它

首先,一些假设:

1) 标签 我假设您的Sitecore数据中有一个标记内容树。每个标记都是基于“标记”模板创建的,因此可以将其识别为标记。例如,您的内容树可能如下所示:

Tags               --> Uses "Folder" template
   Car             --> Uses "Tag" template
     Ford          --> Uses "Tag" template
     Volkswagen    --> Uses "Tag" template
   Bike            --> Uses "Tag" template
     Mens Bike     --> Uses "Tag" template
     Womens Bike   --> Uses "Tag" template
2) 应用标签 您的内容项(即被标记的内容项)有一个TreeList(或TreeListX)字段,其数据源是来自点#1的“标记”文件夹。这允许编辑器根据自己的需要选择标记。我