2015-06-17 4 views
0

У меня есть тип документа Doc. Два свойства - многоузловые сборщики деревьев.Вставить 'Теги Umbraco' через Gathering Node Data Examine Event

Когда узел этого типа документа сохраняется/публикуется, я хочу, чтобы идентификаторы из этих сборщиков просматривали umbraco, чтобы получить имена узлов. Затем я хочу использовать эти имена узлов, чтобы создать «Теги Umbraco» и добавить их в индекс. (против сохраняемого узла)

Поскольку у меня есть два многоузловых сборщика деревьев, я хочу сохранить теги в виде групп тегов.

Это происходит, когда я делаю пользовательский поиск по индексу, мне нужно искать только узлы, имеющие тип документа.

У меня есть событие GatheringNodeData Event и работает, поэтому вам просто нужно посоветовать, как это делается.

Возможно ли это/логично?

ответ

0

Это, безусловно, возможно! В вашем событии GatheringNodeData вам просто нужно создать поля тегов и добавить их в индекс. Вот некоторые грубые код, который должен дать вам представление о том, как это сделать:

private void OnGatheringNodeData(object sender, IndexingNodeDataEventArgs e) 
    { 
     // Create searchable path 
     if (e.Fields.ContainsKey("tagsField")) 
     { 
      //get the info that you need here and add it to the string you want to index 
     } 

     // Extract the filename from media items 
     e.Fields.Add("modifiedTags", "YOUR STRING HERE"); 
    } 

Вы можете искать тег на поле «modifiedTags». Единственная проблема, с которой вы столкнулись, - это тег, который содержит другой тег. Например. если бы у вас были теги «Мой тег» и «Мой тег 2», поиск «Мой тег» в новом поле возвращал элементы, помеченные обоими тегами.