November Happy Hour will be moved to Thursday December 5th.

Indexing job not indexing language version of pages

Vote:
 

Hi,

I have a site where the language versions of a page not get indexed by the indexing job that comes with Episerver Find. If I publish a change to a page, the language versions get indexed. But if I run the indexing job after this, only the master language version will remain in the index. 

I have a different site where the indexing job is working as normal, and comparing the code for both the indexing jobs, doesn´t show any difference between them.

Does anyone have a clue what could be my problem?

We are running version 7.5.466.1 of episerver.Find

#83140
Mar 26, 2014 13:40
Vote:
 

Hi Kristine,

This is a bug that we are investigating at the moment. I hope that we will have a fix out as soon as possible. 

Could I ask you for some more information about the different sites. Are there any differnece between them? Same Cms.Core version and same Find version?

#83142
Mar 26, 2014 13:55
Vote:
 

Hi,

There are some difference between them.

The working site:

episerver.find 7.5.446.66

episerver.cms.core 7.6.1

The site that is not working:

episerver.find 7.5.446.1

episerver.cms.core 7.5.1000

Will upgrading episerver.find be a solution to our problems?

 

#83147
Mar 26, 2014 14:18
Vote:
 

Would be good if that was the case but I doubt it. Surprised that it works for the 7.5.446.66 Site.

We will continue to search for the problem. WIll update this thread when we ahve fixed it.

#83158
Mar 26, 2014 17:41
Vote:
 

I just encountered the same problem. I fixed it by creating my very own indexing job for now.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EPiServer;
using EPiServer.BaseLibrary.Scheduling;
using EPiServer.Core;
using EPiServer.Find;
using EPiServer.Find.Cms;
using EPiServer.ServiceLocation;
using EPiServer.Web;
using log4net;

namespace Solita.Web.ScheduledJobs
{
    [EPiServer.PlugIn.ScheduledPlugIn(
        DisplayName = "EPiServer Find Full Indexing Job",
        Description = @"This indexes all content on every site.",
        SortIndex = 10201)]
    public class EpiserverFindIndexAllContentJob : JobBase
    {
        private static readonly ILog Log = LogManager.GetLogger(typeof (EpiserverFindIndexAllContentJob));
        private IContentIndexer Indexer { get; set; }
        private IClient FindClient { get; set; }
        private IContentRepository ContentRepository { get; set; }
        private SiteDefinitionRepository SiteDefinitionRepository { get; set; }

        public EpiserverFindIndexAllContentJob()
        {
            Indexer = ContentIndexer.Instance;
            FindClient = ServiceLocator.Current.GetInstance<IClient>();
            ContentRepository = ServiceLocator.Current.GetInstance<IContentRepository>();
            SiteDefinitionRepository = ServiceLocator.Current.GetInstance<SiteDefinitionRepository>();
        }

        public override string Execute()
        {
            return IndexSiteContent();
        }

        private string IndexSiteContent()
        {
            var sb = new StringBuilder();
            
            foreach (var startPage in GetStartPages())
            {
                try
                {
                    var startTime = DateTime.Now;

                    var results = Indexer.IndexFrom(startPage.ContentLink, true, startPage.ExistingLanguages).ToList();
                    var indexed = results.Count(r => r.Ok);
                    sb.AppendFormat("{0}: {1}<br>", startPage.SiteId(), indexed);

                    // clear old entries
                    var siteId = startPage.SiteId();
                    FindClient.Delete<IContent>(x => x.GetTimestamp().Before(startTime) & x.SiteId().Match(siteId) | !x.SiteId().Exists());
                }
                catch (Exception ex)
                {
                    sb.AppendFormat("{0}: Error: {1}<br>", startPage.SiteId(), ex);
                    Log.Error(ex);
                }
            }

            return sb.ToString();
        }
        
        private IEnumerable<PageData> GetStartPages()
        {
            var pageLinks = SiteDefinitionRepository.List().Select(d => d.StartPage);
            return pageLinks.Select(link => ContentRepository.Get<PageData>(link, LanguageSelector.MasterLanguage()));
        } 
    }
}

    

 

#86033
May 12, 2014 16:50
Vote:
 

Having the same problem.

Using

EPiServer.Find, version 7.5.450.89

EPiServer.CMS.Core, version 7.7.0

Any updates on this issue?

#86273
May 16, 2014 15:53
Vote:
 

Same - it indexes all languages except the master language, it seems (or, to be fair, it indexes three pages from that as well. Im guessing it's the system pages).

Just updated all nugets;

- EPiServer.CMS.Core.7.8.0

- EPiServer.Find.8.2.3.666

#87398
Jun 12, 2014 12:40
Vote:
 

Jouni Huttunen, you should get a prize. Your job works like a charm.

#87403
Jun 12, 2014 14:47
Vote:
 

Arve, thanks :)

Though you may need to do few modifications depending on your solution. The job indexes StartPage descendant content only. So pages and other content that's located right under the RootPage (siblings to StartPage) are excluded, this includes MediaData-content too.

To index all content one can just change StartPage reference to RootPage, that indexes all, though it much slower to run :)

#87405
Edited, Jun 12, 2014 15:03
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.