Esempio n. 1
0
        public void RebuildIndex(Action <string> statusMessageCallback)
        {
            var pageTree       = ContentLoader().GetDescendents(ContentReference.StartPage).ToList();
            var documents      = new List <ElasticEpiDocument>();
            var tasks          = new List <Task>();
            var indexedCounter = 0;
            var skippedCounter = 0;

            foreach (var contentReference in pageTree)
            {
                var task = Task.Run(() =>
                {
                    var content = ContentLoader().Get <IContent>(contentReference);

                    if (!_contentValidator.ShouldBeIndexed(content) || !(content is ISearchablePage))
                    {
                        skippedCounter++;
                        //continue;
                        return;
                    }

                    var inflated = InflateIndexableDocumentsForContent(content);

                    if (inflated.Any())
                    {
                        lock (documents)
                        {
                            documents.AddRange(inflated);
                        }
                    }

                    indexedCounter++;

                    statusMessageCallback(
                        $"Parsing content... {GetProgress(indexedCounter + skippedCounter, pageTree.Count)} (Skipped: {skippedCounter})");
                });

                tasks.Add(task);
            }

            Task.WaitAll(tasks.ToArray());

            IndexDocuments(documents, true, statusMessageCallback);
            UpdateClickCountOnDocuments();

            statusMessageCallback("Finished rebuilding indexes.");

            ElasticEpiSearchTemplate <T> .Rebuild();

            statusMessageCallback("Updated search template.");
        }
        public ActionResult UpdateEngine()
        {
            try
            {
                ElasticEpiSearchTemplate <ElasticEpiDocument> .Rebuild();

                ServiceLocator.Current.GetInstance <IElasticIndexer <ElasticEpiDocument> >().UpdateEditorSynonyms();
            }
            catch (Exception)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }