Sitecore 6.4 + Lucene - Шаблон наследования - PullRequest
2 голосов
/ 29 марта 2011

После нескольких часов выяснения Lucene я сдался.Надеюсь, вы можете помочь.

Настройка

В нашем текущем дереве Sitecore у нас есть уровни наследования шаблонов шаблона 2.(Допустим, Транспортное средство -> Автомобиль -> Формула 1 / Транспортное средство -> Лодка).

То, что мне сейчас нужно получить через Lucene, это то, что каждый ContentItem наследует напрямую или косвенно , из определенного шаблона.

Например:

  • Получить транспортные средства -> возвращает:"Универсальные" транспортные средства, автомобили, автомобили F1и лодки
  • Получить машины -> возвращает: Автомобили, Автомобили F1

Я думал, что использовал поле _templates в Lucene, то есть:
Получить транспортные средства -> _templates содержит шаблон транспортного средства.Get Cars -> _templates содержит руководство по шаблону Car.

Проблема

Основная проблема, с которой я сталкиваюсь, заключается в том, что элементы содержимого F1 Car - шаблон содержит только автомобилей и автомобилей F1 в поле _templates, а не универсальный "Автомобиль".

Я, вероятно, неверно истолковал_templates-field, но мне интересно, есть ли другие варианты.


Конфигурация Sitecore:

Элементы содержимого:

  • sitecore
    • содержание
      • Дом
        • AКатегория
          • Ребенок 1
          • Ребенок 1.1
          • A Child 2

Шаблоны (уровни = наследование):

  • Основная сущность
    • Дочерняя сущность 1
      • Дочерняя сущность 1.1
    • Дочерняя сущность 2
  • Категория

1 Ответ

2 голосов
/ 30 марта 2011

Создайте новый индексатор, который наследует 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".

...