Theme:

Umbraco Search is coming to town

You better watch out, you better not cry. You better not pout, I'm telling you why: Umbraco Search is coming to town!

A brand-new search offering for Umbraco is in the works! It is aptly named Umbraco Search, and it will soon replace search as we know it today.

In this article you’ll get a high-level overview of the changes that lie ahead, the new possibilities they bring to the table, and how you can prepare for the future of search in Umbraco.

What’s wrong with search today?

There is nothing decisively wrong with the search we have in Umbraco today. However, the feature set is somewhat limited out of the box, and it is very much entwined with Examine.

To address this, an RFC was submitted at the beginning of the year, outlining a complete rewrite of search. This rewrite has three main purposes:

  1. Decoupling search from Examine.
  2. Expanding the feature set.
  3. Making it easier to utilize advanced search features.

Examine continues to power Umbraco Search out of the box, but this new setup allows you to utilize other search technologies, without having to reinvent the wheel.

Examine, decoupled

Umbraco Search is essentially an abstraction layer that sits between Umbraco and the underlying search technology. It requires a search provider, which is the concrete implementation for specific search technology.

In other words, Examine becomes the default search provider for Umbraco Search:

Puzzle pieces illustrating the placement of the Umbraco Search abstraction layer.

Search providers are pluggable. If Examine for some reason does not meet your search requirements – either from the get-go, or due to changing requirements over time – you can simply swap it out with another search provider.

Umbraco Search can even run multiple search providers simultaneously. While that might sound far-fetched, there are certain real-world scenarios where it’s a nice option indeed.

Puzzle pieces illustrating how additional search providers can be plugged into Umbraco Search.

You can implement your own search providers for your preferred search technology. This might sound like a daunting task, but it doesn't have to be. For reference and inspiration, I have published my own search providers for Elasticsearch, Algolia and Typesense. They are of course open-source, and I highly encourage you to also open-source any search providers you might create.

Do also keep in mind that Umbraco Search is natively powered by Examine. This means that ExamineX works seamlessly with Umbraco Search, making it an obvious choice if you’re looking for an out-of-process search provider.

An extended feature set

Over the years, the Umbraco community has conjured a multitude of solutions to build search experiences with Examine, beyond what Umbraco offers out of the box.

Umbraco Search builds on these learnings, as well as learnings from the Delivery API, to deliver a feature set which supports:

  • Faceting and filtering (including ranges).
  • Languages and segments.
  • Protected content.

…and of course free text querying.

Umbraco Search also understands the intent of the Umbraco property editors. Some represent keywords, others numeric values. Some produce a single value, others multiple values. All this matters greatly to ensure correct filtering and sorting, when performing search beyond “just text”.

From a technical perspective, Umbraco Search is highly extendable, because search is hardly ever a one-size-fits-all feature. From property to document level you can influence what, when and how property values are indexed for searching.

A friendlier search

Search is a complex thing to tackle. When working with search in Umbraco today, you need to juggle a fair amount of Examine implementation to build a search experience beyond basic full text search.

To make it easier to build great search experiences, we have deliberately created Umbraco Search as a high-level, Umbraco flavored abstraction. In essence, you should only worry about what you want to achieve, and not about how that translates into a search query.

Of course, building a friendly, high-level abstraction means making choices and simplifying things. This means that Umbraco Search might not cater to very specific and/or complex search criteria. Luckily, you can still go straight to the underlying search technology to perform those queries.

You can have your say

If you'd like to take part in shaping the future of search in Umbraco, this is the time to do it.

Get involved. Try it out. Give us ideas, report issues. Help us make Umbraco Search the best it can be.

At the end of the day, we are building Umbraco Search for you.

The current state of Umbraco Search

Umbraco Search is currently developed and released as an add-on to Umbraco.

At the time of writing this, it is in its alpha release phase. There are still features missing, all of which can be found on the GitHub issue tracker.

We will continue to push out releases as the the feature set and the extensibility evolves from implementing both known features and ideas/feedback from those testing it out.

Preparing for the future

In one of the upcoming Umbraco majors, Umbraco Search will become part of the default Umbraco installation and thus replace search as we know it today.

In other words, the trusty old ExternalIndex will be no more.

While this definitively sounds frightening to a lot of you, the good news is that Umbraco Search is available now. You can start experimenting with it today.

What’s more… since it’s currently being released as an add-on, you can adopt Umbraco Search in an existing project at any time. And while Umbraco Search utilizes a more recent version of Examine than what is shipped with Umbraco today, it should not interfere with your current search implementation – it will co-exist alongside what you have today, making it easier to start porting immediately.

If your project relies heavily on concrete Examine querying, you can likely retain a lot of this implementation with the Examine indexes created by Umbraco Search. The data format for the indexes is vastly different from what you know today, but at the end of the day, it is still the same data source – namely your content.

There's no time like the present

Umbraco Search is happening, and you will be affected by it at some point. The sooner you start experimenting with it, the better you can prepare for it.

I have been – and will continue to be – blogging a lot about Umbraco Search on my personal blog. You’ll find a lot of resources, code examples, demos, thoughts and opinions there.

Let's shape the future of search in Umbraco together 🫶