Indexing a content item programatically
public bool IndexContent(int contentId, bool contentOnly, bool childrenOnly, string language)
{
// Retrieve the content
var contentReference = new ContentReference(contentId);
var contentItems = new List<IContent>();
if (contentReference != null && contentReference != ContentReference.EmptyReference)
{
if (contentOnly)
{
var contentItem = _contentRepository.Get<IContent>(contentReference);
try
{
// Index the content
_contentIndexer.Index(contentItem);
return true;
}
catch (Exception ex)
{
_logger.Error($"Error in IndexContent, exception is {ex}");
return false;
}
}
else
{
if (childrenOnly)
{
//Get the children of the content
var children = _contentRepository.GetChildren<IContent>(contentReference);
if (children != null && children.Any())
contentItems = children.ToList();
}
else
{
//Get the descendants of the content
var descendants = _contentRepository.GetDescendents(contentReference).Select(_contentRepository.Get<IContent>);
if (descendants != null && descendants.Any())
contentItems = descendants.ToList();
}
// Save the updated content
if (contentItems != null && contentItems.Count > 0)
{
foreach (var contentItem in contentItems)
{
try
{
// Index the content
_contentIndexer.Index(contentItem);
}
catch (Exception ex)
{
_logger.Error($"Error in IndexContent, exception is {ex}");
}
}
return true;
}
}
}
return false;
}
May 18, 2025
good example