Skip to the content

Umbraco 9 Examine - Creating a Custom Index

Differences Between V8 & V9

Similar to the article 'Umbraco 9 Examine - Basic Search' you will find not a lot has changed from Umbraco Version 8 to  Version 9 when creating custom Indexes

Honestly, I think the only things that have changed are...

1. A couple of Namespace changes

2. And the way we compose our component.

Create a Component

The first thing you need to do is create a component to manage your custom index code. The easiest way to show you what's needed is by giving you a code example.

There is quite a lot of code so I didn't paste here. Instead you can download my component code from here.

Download ExamineComponent

Composing your component

The next step is to compose / register your component. This has be done a number of ways. This bit of code you might fine useful.

builder.Components().Append<ExamineComponent>();

How to compose components, services, and events is a subject in itself. Lucky I have create an article on this. If you want to learn about the different ways to can register a component please read the following articles.

How to compose a custom service in Umbraco 9

Different Ways to Inject Events, Helpers and Services into Umbraco 9

To Finalize

That's all there is to it. If you have done everything correct and re-built your project then this should work. You will know if this is working if you save a content node and set some break points on your component. This should fire every time you save / publish a content item. You can also go into the Settings / Examine and Re-Build the external index. This will do the same.

You will notice I added a few custom indexes.

args.ValueSet.Add("searchHomepageKey", contentNode.AncestorOrSelf("homePage").Key.ToString());
args.ValueSet.Add("searchParentKey", contentNode.Parent.Key.ToString());
args.ValueSet.Set("searchCurrentKey", contentNode.Key.ToString());
args.ValueSet.Add("searchableKeywords", combinedFields.ToString().ToLower());
args.ValueSet.Set("sortableDate", contentNode.CreateDate.ToString("yyyyMMddHHmmss"));
if (args.ValueSet.ItemType == "blogDetailsPage")
{
     var publishedDate = contentNode.Value<DateTime>("publishedDate");
     args.ValueSet.Set("sortableDate", publishedDate.ToString("yyyyMMddHHmmss"));
}

On the last one I showed an example of just adding a custom index value to the blog page only.

If you have any problems please comment below. I am happy to help.

About the author

David Armitage

.Net MVC Developer
.Net Core Developer
Umbraco Certified Master
Recruitment Professional

Hey Peeps,

I'm an entrepreneur and web developer with a passion for coding. I absolutely love working with Umbraco CMS and appreciate the Umbraco community even more.

I've got 10 years+ .Net experience and 7 years+ experience working in the recruitment industry, both coding and marketing job websites. I wanted to use my skills to help give something back to this awesome community and so I decided to build UmbraJobs.com.

My vision & fundamentals

I want this website to be a place where Umbraco Professionals and Umbraco Partners can advertise their services but at the same time I want to filter out all the under-qualified freelancers & agencies that take up the biggest part of other job & freelancer websites. We've all worked hard to gain our Umbraco certifications, partnership status, and help build the Umbraco community to what it is today. I want to see everyone get rewarded for their efforts.

Follow me on social media

If you're an Umbraco professional, partner, employer, recruiter or a passionate Umbraco community builder then I'm more than happy to hear from you. Follow me on my social media channels and please reach out if you have any needs, want help or consultation with anything Umbraco related or just want a general chat.

comments powered by Disqus

Blog Filter


How we can help?

Need help with an Umbraco project?

Need help with a project but not too sure who to approach? Send us your project brief and budget. We will provide a free consultation and can help you gather quotes from the best and most suitable freelancers or agencies.

Looking to hire an Umbraco Professional?

Have you got job vacancy and want to hire an Umbraco professional? Post a job on our website for free. Alternatively let us know your requirements and we will send suitable prospects your way.

Claim your free profile!

Are you an Umbraco Freelance Developer or Umbraco partner that wants to advertise on our site? If you work with Umbraco or registered as an Umbraco partner then you can create a profile for free.

Let's build the Umbraco Community

We're big on building the Umbraco community and we think you guys are awesome! If there's anyway at all we can help then please reach out.