KennyG
Dec 20, 2017
visibility 5173
star star star star star
(3 votes)

Staying under the document limit when using the Find developer index

When working on a site migration with a LOT of content we often find ourselves running up against the 10,000 document limitation on a developer index.

I learned this trick from a coworker. You can use an Initialization Module to get some fine-grained control over what is getting added to the index.

using System;
using System.Diagnostics;
using System.Linq;
using AlloyInitModuleTest.Models.Media;
using AlloyInitModuleTest.Models.Pages;
using EPiServer.Core;
using EPiServer.Find.ClientConventions;
using EPiServer.Find.Cms;
using EPiServer.Find.Cms.Conventions;
using EPiServer.Find.Cms.Module;
using EPiServer.Find.Framework;
using EPiServer.Framework;
using EPiServer.Framework.Initialization;


    [InitializableModule]
    [ModuleDependency(typeof(EPiServer.Web.InitializationModule))]
    public class SearchConventionInitializationModule : IInitializableModule
    {
        public void Initialize(InitializationEngine context)
        {
            //Add initialization logic, this method is called once after CMS has been initialized
            this.SetTypesToIndex(ContentIndexer.Instance.Conventions);
    }

    [Conditional("DEBUG")]
    private void SetTypesToIndex(IContentIndexerConventions conventions)
    {
        // start from a clean slate
        conventions.ForInstancesOf<ContentData>().ShouldIndex(x => false);

        //one by one turn on or off as you develop the site, remember to reindex 
        conventions.ForInstancesOf<ImageFile>().ShouldIndex(x => false);
        conventions.ForInstancesOf<GenericMedia>().ShouldIndex(x => false);
        conventions.ForInstancesOf<LandingPage>().ShouldIndex(x => true);
    }

    public void Uninitialize(InitializationEngine context)
        {
            //Add uninitialization logic
        }
    }



[Conditional("DEBUG")] allows us to limit this to debug builds and index everything in production.

Dec 20, 2017

Comments

eGandalf
eGandalf Dec 21, 2017 03:18 PM

Just learned a bit about managing the Find index like this, myself. The [Conditional("DEBUG")] attribute is a great tip! Thanks!

KennyG
KennyG Dec 21, 2017 03:54 PM

Yeah, I could really use some actual Find training instead of just trying to tweak my coworkers' code.

error Please login to comment.
Latest blogs
Optimizely Commerce 14 Now Supports .NET 10

In my previous post, Optimizely CMS 12 Now Fully Supports .NET 10 , I noted one remaining limitation: Commerce 14 (Commerce Connect) did not yet...

Bien Nguyen | Aug 7, 2026

The Top 10 Things I'm Actually Using AI For

A while back I wrote about ReviewPR, an Azure Function that uses AI to review Azure DevOps pull requests. That was one specific use case, but over...

KennyG | Aug 5, 2026

Drag-and-Drop Reordering for Commerce Media Collection in Optimizely Commerce Connect

Optimizely Commerce Connect ships a polished asset editor for the CommerceMediaCollection  property on catalog entries. It lets editors add, remove...

Linh Doan Cuu | Aug 5, 2026

Order tabs with drag and drop V2

I earlier did a very simple Blazor version to be able to sort tabs with drag and drop. I wanted to update it a bit and also display how the tabs ar...

Per Nergård (MVP) | Aug 4, 2026