经过几个小时计算出Lucene后,我放弃了。希望你能帮忙。
设置
在我们当前的Sitecore树中,我们有模板2模板继承级别。 (我们说车辆 - >汽车 - >一级方程式/车辆 - >小船)。
我现在需要通过Lucene获取的是每个ContentItem从某个模板直接或间接继承。
例如:
我认为使用Lucene中的_templates
字段,即:
获取车辆 - > _templates
包含Vehicle-template-guid。
获取汽车 - > _templates
包含Car-template-guid。
问题
我遇到的主要问题是 F1 Car -template的内容项目在_templates
字段中包含仅汽车和F1汽车,以及不通用“车辆”。
我可能误解了_templates-field,但我想知道是否还有其他选择。
Sitecore配置:
内容项目:
模板(级别=继承):
答案 0 :(得分:2)
创建一个新的索引器,它继承Sitecore.Data.Indexing.Index,并覆盖AddFields方法,如下所示:
protected override void AddFields(Item item, Document document)
{
// Add base fields
base.AddFields(item, document);
// Add all inherited templates id to a field
string TEMPLATE-PATH="get template path for this item here";
document.Add(new Field("template-path", TEMPLATE-PATH, Field.Store.NO, Field.Index.TOKENIZED));
}
然后您可以通过“template-path”字段进行搜索。