EnablePageFilesIndexing does not process ForInstancesOf<UnifiedFile>().ShouldIndex()

Johan Kronberg
Member since: 2005
 
FileIndexer.Instance.Conventions.ShouldIndexVPPConvention = new VisibleInFilemanagerVPPIndexingConvention();
ContentIndexer.Instance.Conventions.EnablePageFilesIndexing();
FileIndexer.Instance.Conventions.ForInstancesOf<UnifiedFile>().ShouldIndex(x => FileTypesToIndex.Contains(x.Extension));

FileTypesToIndex is a list of file file extensions similiar to the one in Joel's blog post http://joelabrahamsson.com/entry/building-a-search-page-for-an-episerver-7-site-with-episerver-find   

In this list I don't have .jpg. Still .jpg files from PageFiles are added to the Index and show up in UnifiedSearchFor.
What do I need to do in order to have the same ShouldIndex-check for PageFiles?

This project is EPi 7 and the latest version of the module.

#64684 Jan 07, 2013 10:43
  •  

    Hi,

    The PageFiles handling is done by the ContentIndexer so in order to filter PageFiles you have to change the ContentIndexer conventions:

    ContentIndexer.Instance.Conventions.ForInstancesOf<IContent>().ShouldIndexPageFile((content, file) => FileTypesToIndex.Contains(file.Extension));

    / Henrik

    #64698 Jan 07, 2013 13:39
  • Johan Kronberg
    Member since: 2005
     

    Great! Thanks!

    #64701 Jan 07, 2013 14:20
  • Jonathan Roberts
    Member since: 2012
     

    Is it possible to have multiple Global ForInstancesOf? such as:

                PageIndexer.Instance.Conventions.ForInstancesOf<PageData>().ShouldIndex(page => page.PageTypeName.StartsWith("[ExtensionSys] Text"));
                PageIndexer.Instance.Conventions.ForInstancesOf<PageData>().ShouldIndex(page => page.PageTypeName.StartsWith("News - Article"));
                PageIndexer.Instance.Conventions.ForInstancesOf<PageData>().ShouldIndex(page => page.PageTypeName.StartsWith("Content Page - 3 Columns"));

        

    #66506 Mar 03, 2013 19:58
  •  

    You can pass a full fledge delegate instead of a lambda expression:

    PageIndexer.Instance.Conventions.ForInstancesOf<PageData>().ShouldIndex(page => 
    {
    return page.PageTypeName.StartsWith("[ExtensionSys] Text") || page.PageTypeName.StartsWith("News - Article") || page.PageTypeName.StartsWith("Content Page - 3 Columns"; });

        

    #66508 Edited, Mar 04, 2013 0:55
  • Jonathan Roberts
    Member since: 2012
     

    Great, that sounds good - Im getting the actual Composer name from the Search such as CF__1218_8296_4521_12887, is there a way to get the actual Page where it is referenced so the user can click through to the page and for FIND to show the Excerpt too?

    #66519 Mar 04, 2013 9:50
  • Robert Tellvik
    Member since: 2013
     

    I have tried tried with following code in my Global.asax.cs file but I still get  jpg-files from page files

                ContentIndexer.Instance.Conventions.EnablePageFilesIndexing();
                ContentIndexer.Instance.Conventions.ForInstancesOf<SitePageData>().ShouldIndexPageFile((content, file) => FileTypesToIndex.Contains(file.Extension));
    

    where

            private static readonly IList<string> FileTypesToIndex = new List<string>
                {
                    ".doc",
                    ".docx",
                    ".pdf",
                    ".txt",
                    ".xls",
                    ".xlsx"
                };
    

    What am I missing? (EPiServer 7)

    #113769 Nov 27, 2014 14:24