public void Process(RelatedContentTagArgs args) { var relatedItemsList = new List <Guid>(); IRelatedItemsDiscoveryProvider discoveryProvider = args.Configuration.DiscoveryProvider; try { Sitecore.Data.Fields.MultilistField relatedTemplates = args.ContentItem.Fields[Constants.Fields.RetatedTemplates]; var relatedTemplatesIds = relatedTemplates.TargetIDs.Select(x => x.Guid); int.TryParse(args.ContentItem.Fields[Constants.Fields.Similarity].Value, out var similarity); IEnumerable <Guid> items = discoveryProvider.GetRelatedItems(args.ContentItem.ID.Guid, relatedTemplatesIds, similarity); if (items == null || !items.Any()) { var message = $"No related items find for {args.ContentItem.Name}"; MessageBus messageBus = args.MessageBus; messageBus?.SendMessage(new Message { Body = message, Level = MessageLevel.Info }); Log.Warn(message, this); args.AbortPipeline(); } else { relatedItemsList.AddRange(items); } } catch (Exception ex) { string message = "An error occured in " + discoveryProvider.GetType().Name + " provider"; MessageBus messageBus = args.MessageBus; messageBus?.SendMessage(new Message { Body = message, Level = MessageLevel.Error }); Log.Error(message, ex, this); } args.RelatedItems = relatedItemsList; }
public void Process(RelatedContentTagArgs args) { IRelatedItemsDiscoveryProvider discoveryProvider = args.Configuration.DiscoveryProvider; try { var content = string.Join(" ", args.Content.Select(x => x.Content)); if (string.IsNullOrEmpty(content) || string.IsNullOrWhiteSpace(content)) { MessageBus messageBus = args.MessageBus; if (messageBus != null) { messageBus.SendMessage(new Message { Body = $"Item {args.ContentItem.Name} contains no content.", Level = MessageLevel.Warning }); } args.AbortPipeline(); } args.Vector = discoveryProvider.GetVector(content); } catch (Exception ex) { string message = "An error occured in " + discoveryProvider.GetType().Name + " provider"; MessageBus messageBus = args.MessageBus; if (messageBus != null) { messageBus.SendMessage(new Message { Body = message, Level = MessageLevel.Error }); } Log.Error(message, ex, (object)this); } }