Most of the CMS systems on the market offer some level of support for search functionalities, some of them are quite sophisticated, some are actually pretty poor, some of them cannot provide any search because of the way they work. This article compares the search capabilities of 16 different CMSes.
Prismic
Prismic offers a wide variety of search capabilities, including the full-text search. It doesn’t matter if you want to search within a single data type or in the entire database - you can use the same mechanisms and APIs. You can switch between searching through master, preview, release preview and A/B variations data.
Advantages
- Prismic’s query predicates are powerful and easy to understand concepts and are supported by comprehensive documentation.
- Prismic’s docs also provide code snippets for many popular languages.
- Available in the free plan.
Disadvantages
- It doesn’t seem that Prismic provides any sort of scoring within the search results and the response is simply based on “match” or “no-match”.
- Documentation does not have the search function itself.
You can check more about search in Prismic in their documentation.
Contentful
Contentful provides standard search API and GraphQL endpoints. They also support full-text search through their API, but it seems very basic.
Advantages
- The search API is easy to use and understand.
- Their API provides support for geo-based queries, useful for searching objects within a distance from a given location.
- GraphQL endpoint provides standard and powerful filtering options.
- A lot of ways of filtering.
Disadvantages
- If you want to search for specific Content Type, you can only specify one at a time.
- There are no aggregations or result scoring support.
Check out more in their documentation
Flotiq
Flotiq (yes, that’s us ;) ) provides extensive full-text search capabilities by wrapping Elasticsearch in Flotiq APIs. Flotiq’s powerful search capabilities make it one of the best headless CMS search solutions.
Advantages
- Flotiq’s full-text search is based on queries passed to Elasticsearch, which is a very powerful full-text search engine.
- Flotiq wraps the ES API to provide better compatibility with the remaining parts of the API.
- Search results are scored.
- You can score each field individually, very convenient if you’d like to promote results where the match appears in a specific field, e.g. in the blog post title.
- You can aggregate results by any of the fields, which makes it super easy you build faceted search results pages.
Disadvantages
- Flotiq’s documentation is still evolving.
- Not all Elasticsearch functions are available.
You can find more information about Flotiq’s search engine in the Search API documentation and Flotiq deep dive doc.
Storyblock
Storyblock has multiple but consistent ways of filtering results, you can filter by dates, numbers, and parts of custom fields also with like and not_like elements. But developer must add wildcards themselves and must specify the filed, so it’s very limited full-text search.
Advantages
- A consistent and straightforward way of filtering stories.
- A lot of ways of filtering.
Disadvantages
- You must specify the searched field.
- There are no aggregations or result scoring support.
You can check more about search in Storyblock in their documentation.
Sanity
Sanity offers very powerful filtering options using GROQ-queries
Advantages
- A lot of ways of filtering.
- You can filter by references.
- They started to experiments with fields weights.
Disadvantages
- You have to learn the new and very specific query language (GROQ).
- You must specify a field for filtering.
- There are no aggregations.
- GROQ documentation is work in progress.
- You must specify weights of fields in configuration; they can’t be changed on search queries.
You can check more about search in Sanity documentation 1 & 2 & 3 & 4
Forestry
Because of the way Forestry works (it commits to your git repository), there are no search functionalities out of the box. If we just couldn’t find it, please let us know.
DatoCMS
DatoCMS gives search functionality based on GraphQl filtering, it has very limited full-text search.
Advantages
- If you know GraphQL, filtering records in DatoCMS is a no-brainer.
Disadvantages
- You must specify a field for filtering.
- There are no aggregations or result scoring support.
You can check more about search in DatoCMS in their documentation
NetlifyCMS
We couldn’t find any search functionality in NetlifyCMS, if there is one please let us know.
Strapi
Strapi has limited filtering options out of the box but adds endpoints for querying the database directly.
Advantages
- You can query the database directly.
- A lot of ways of filtering out of the box.
Disadvantages
- If you want more complicated filtering without database querying, you need to write endpoint yourself.
- No aggregations or result scoring out of the box.
- No AND operator out of the box.
Check out more in their documentation 1 & 2
Headless WordPress
Wordpress provides a headless version with search endpoint.
Advantages
- While the basic search is very limited, it is still WordPress, so you can easily extend standard functionality by plugins.
Disadvantages
- The documentation leaves a lot to be desired.
TinaCMS
Like a Forestry TinaCMS has no search functionalities out of the box because of the way it works. As always if we just couldn’t find it, please let us know.
Gentics Mesh
Gentics Mesh provides direct access to ElasticSearch query API and so - offer a very powerful search mechanism.
Advantages
- Powerful search engine, based on ElasticSearch
Disadvantages
- You will need to educate yourself on ElasticSearch. Gentics Mesh seems to provide raw access to ES, instead of neatly wrapping its API into a set of methods that are familiar to their users.
If you want to know more check out their documentation
Cloud CMS
Cloud CMS provides direct access to ElasticSearch query API and so - offer a very powerful search mechanism. They also allow querying Mongo DB and traverse node graphs.
Advantages
- Powerful search engine, based on ElasticSearch.
- You can traverse data nodes to find similar objects or objects based on localization.
- You can search, query and traverse all at once to get the best results.
Disadvantages
- You will need to educate yourself on ElasticSearch. Cloud CMS seems to provide raw access to ES, instead of neatly wrapping its API into a set of methods that are familiar to their users.
You can check out more in their documentation.
Contentstack
Contentstack provides a pretty complex standard search API and a limited full-text search. They recommend integrating with other services to provide full-text and ranked search results.
Advantages
- They openly admit that you should use a dedicated search solution.
- Good documentation with examples and playgrounds.
Disadvantages
- You must provide full-text search yourself.
Check out more in their documentation
Butter CMS
Butter CMS doesn’t seem to care about search that much. They seem to only provide a search endpoint for their blog engine, and even that is very limited.
Advantages
- Can’t think of anything, sorry.
Disadvantages
- Very limited support, only in the blog engine part.
Acquia
Acquia has plug-and-play search service based on Solr with Nginx load-balancer for better availability.
Advantages
- Result aggregation and scoring.
- High availability.
- You can search through attachments.
- Content recommendations.
Disadvantages
- Can’t use Acquia Search in the dedicated virtual private cloud.
- Their documentation is hard to read.
You can check out more in their documentation.
Summary
Although most headless CMS solutions offer some kind of search - it’s often very limited.
Having a powerful search engine, which is wrapped in a set of convenient APIs, seems a must to provide the end-users with search results that can be:
- easily navigated,
- sorted,
- and faceted.
Yet, the most popular systems, like Contentful or ButterCMS, seem to ignore the problem and significantly limit the support for search.
The contending systems, like Cloud CMS, Flotiq, Acquia or Gentics Mesh - offer better support for search by providing access to ElasticSearch or Solr, either directly (Gentics, Cloud, Acquia) or by wrapping it into more straightforward and more familiar APIs (Flotiq).