Picking the correct search provider for your project can be an arduous task. Out-of-the-box, Episerver comes bundled with a basic search provider. Basic search is ok for simple page searching, however, depending on your requirements the basic search might not give you enough capabilities. Episerver also has a third-party search SAAS product, called Episerver Find. Eivind provides a lot more power and functionality. On top of EpiFind, there is also a non-Episerver specific solution. It can seem confusing as to which one you should pick 😕This poses the question, which one should you use ? In today's post, I'm going to review the main search provider options that I've come across when architecting an Episerver project.
Which Search Provider Should I Use With Episerver?
Deciding on which search provider to use can usually be determined by how you answer these questions:
Do you want to self-host, or, cloud host?
Is all your search content in Epi?
Will your site be in a load-balanced environment?
How important is searching in terms of the aim of your website? If most of your website's traffic comes from Google, will a basic search suffice?
Do you need to index different types of content? If you sell/have products you sell to your users, will you need to index this specifically and be able to filter on specific product attributes
Will you search to combine data from multiple sources?
Based on your answers, will determine which provider is most appropriate to your project. Now you have a good understanding of what you need. Let us review the options!
Episerver provides a free search addon, EpiSearch that is based on the Lucene search provider. Lucene is pretty much the defacto search provider for the majority of CMS providers. Episerver, Sitecore and Umbraco all have Lucene compatible searches. With a Lucene index, you can create and define an index via config files that will contain a duplicate copy of your CMS web pages and assets. Each CMS provider normally ships with an API to add and retrieve items from the index. Lucene indexes are stored on disk (which makes load balancing a pain at times). This is fine for a single node website, it makes it less favourable for load balancing and web apps.
Lucene is widely used
More customizable than some other offerings (like Google Site Search)
Does not work well for load balancing. Having separate indices on each individual node in your cluster can cause issues
Can be a pain to clear out data in the index, due to file locking
Only works on a per website level
Find is basically an integrated Episerver search provider based on Elasticsearch. Find is cloud-based so you don’t need to worry about index files living on a server, so for load-balanced environments, it’s pretty good. Find provides more advanced search capabilities, like faceting, weighted results and AI-powered recommendations. Weighted searches always seem like a must-have requirement nowadays! The API to get data from Find is pretty simple. The search results always seem pretty relevant and you can even add weightings to things from the admin panel.
Find provides complex capabilities like facets out the box
Find can search and index multiple types of content, you can throw a load of C# classes it into, let find do all the searching and ordering and then change your displays based on the object at runtime.
Free development index available to try before you buy
Find can index multiple websites if needed
- Find isn't the cheapest of options. If the website only requires a simple content search, the monthly license cost could make it overkill
Elasticsearch is the search provider EpiFind uses under the hood, so in theory, if Find can do something you like, you can also do the same with a vanilla Elastic search and some custom code. I’ve personally never gone down this route, so I’m not 100% sure what you would need to do to integrate an Elasticsearch index, however, other companies have created their own bespoke Epi Elastic API’s successfully, so it is definitely possible and an option. Getting a self-hosted Elastic search will be cheaper than paying for a monthly Find license, however, you won't get Epi's unified search API and the automatic indexing from within the CMS part. If you want this you will have to code it yourself. You need to take the extra development costs into account.
Uses the same underlying tech as Find but with less Episerver integration
Cheaper for monthly fees
Will take longer to implement
No Episerver integration admin screens
Needs elastic search skills
Have to pay for your own cloud services if required
Although I've had little experience with Solr, I know a few companies use it. Solr is Sitecore's choice for their advanced search provider and as a lot of agencies work on Episerver and Sitecore projects, companies that are experienced with Solr tend to stick with what they know.
When I'm choosing the tech to use on a website, my preference is to pick technologies that are well-travelled. Lucene is a great option for simple searching, and Find does a great job for an advanced search. If you decided on Solr then there will definitely be less documentation and support available to you when integrating it into Episerver. If you decided to use Solr, you will also run into the same issues you face if you decided to implement Elasticsearch yourself. You will also have to do all the custom development work yourself.
The above list contains the main search providers that the majority of websites I've worked on in the last 10 years have used. This list isn't a definitive list, however, it does contain the most popular search options people use when working with Episerver CMS. The aim of this post isn't to provide one recommendation that will work for everyone, the aim is to try and share some of the considerations you should consider before picking an option. I hope it has done that. Happy Coding 🤘