public bool ReindexNode(string nodeIds) { if (!_fullTextConfig.IsFullTextIndexingEnabled()) { _logger.Debug <IndexController>("FullTextIndexing is not enabled"); return(false); } if (!_examineManager.TryGetIndex("ExternalIndex", out IIndex index)) { _logger.Error <IndexController>(new InvalidOperationException("No index found by name ExternalIndex")); return(false); } if (nodeIds == "*") { foreach (var content in Umbraco.ContentAtRoot()) { _cacheService.AddToCache(content.Id); foreach (var descendant in content.Descendants()) { _cacheService.AddToCache(descendant.Id); } } index.CreateIndex(); _indexRebuilder.RebuildIndex("ExternalIndex"); } else { var ids = nodeIds.Split(',').Select(x => int.Parse(x)); foreach (var id in ids) { _cacheService.AddToCache(id); } index.IndexItems(_valueSetBuilder.GetValueSets(_contentService.GetByIds(ids).ToArray())); } return(true); }
public async Task <string> GetSitemapDocument(string canonicalLinkUrl) { var payload = await _cacheService.GetFromCache(_cacheKey); if (!string.IsNullOrEmpty(payload)) { return(payload); } XNamespace xmlns = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9"); XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); XNamespace schemaLocation = XNamespace.Get("http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"); XElement root = new XElement(xmlns + "urlset", new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(xsi + "schemaLocation", schemaLocation) ); var sitemapNodes = await GetSitemapNodes(canonicalLinkUrl); foreach (SitemapNode sitemapNode in sitemapNodes) { XElement urlElement = new XElement( xmlns + "url", new XElement(xmlns + "loc", sitemapNode.Url), sitemapNode.LastModified == null ? null : new XElement(xmlns + "lastmod", sitemapNode.LastModified.Value.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:sszzz")), sitemapNode.Frequency == null ? null : new XElement(xmlns + "changefreq", sitemapNode.Frequency.Value.ToString().ToLowerInvariant()), sitemapNode.Priority == null ? null : new XElement(xmlns + "priority", sitemapNode.Priority.Value.ToString("F1", CultureInfo.InvariantCulture))); root.Add(urlElement); } XDocument document = new XDocument(root); payload = document.ToString(); await _cacheService.AddToCache(_cacheKey, payload); return(payload); }
public override bool PerformRun() { if (!_fullTextConfig.IsFullTextIndexingEnabled()) { return(false); } if (!_examineManager.TryGetIndex("ExternalIndex", out IIndex index)) { _logger.Error <PerformCacheTasks>(new InvalidOperationException("No index found by name ExternalIndex")); return(false); } try { using (_profilingLogger.DebugDuration <PerformCacheTasks>("PerformCacheTasks", "PerformCacheTasks done")) { var tasks = _cacheService.GetCacheTasks(); foreach (var task in tasks) { _cacheService.SetTaskAsStarted(task); } foreach (var task in tasks) { var content = _contentService.GetById(task.NodeId); if (content != null) { _cacheService.AddToCache(task.NodeId); index.IndexItems(_valueSetBuilder.GetValueSets(content)); } else { _cacheService.DeleteFromCache(task.NodeId); } _cacheService.DeleteCacheTask(task.Id); } } } catch (Exception e) { _logger.Error <PerformCacheTasks>(e); } return(true); }
/// <summary> /// Get list of topics that contains the parameter. Uses caching for performance. /// </summary> /// <param name="news">paramter to search for</param> /// <returns>list of topics that contains parameter string</returns> public async Task <ActionResult <IEnumerable <Topic> > > SearchForNews(string news) { string cacheResult = null; cacheResult = _cacheService.GetFromCache(news).Result; if (cacheResult != null) { return(JsonConvert.DeserializeObject <ActionResult <IEnumerable <Topic> > >(cacheResult)); } var result = await _topicRepo.SearchForTopics(news); if (result != null && result.statusCode == HttpStatusCode.OK) { var addCacheResult = _cacheService.AddToCache(news, JsonConvert.SerializeObject(result)); } return(result); }