The v0.11 version of Meilisearch introduces a highly anticipated feature: faceted search. Every modern search experience includes faceted search. We were eager to offer this experience to our users, and we are excited to have finally achieved this critical step.

If you're not familiar: Faceted search lets you search by including or excluding some attributes from categories called facets. You have probably come across faceted search during your online consumerist life. It is often presented as a sidebar with checkboxes. Giving me, as a woman, the possibility to show only 8.5 size shoes and see my possible choices decrease to oblivion.

In this case the facet is size, the attribute is UK 8 ½, and the number of products found 2

Faceted search is not easy to understand. It is often confused with Filters. However, filtering is used to filter the returned results by adding constraints. Facets, on the other hand, are used to categorize the data into subsets that will be searched upon: they reduce the number of documents to process.

We didn’t see any reason to reinvent the wheel; if you’re familiar with how Algolia does facets, you’ll see we’ve gone with a very similar API. We improved a bit on the usage to reduce furthermore all possible friction in the hope that it is accessible for all users.

To set up faceted search, only two steps are required:

Add facets in the settings. For an attribute to be used as a facet it must be added in the attributesForFaceting list.

$ curl \
  -X POST 'http://localhost:7700/indexes/movies/settings' \
  --data '{
      "attributesForFaceting": [
          "director",
          "genres"
      ]
  }'
Declare director and genres as facets.

Use facets during search. By using the query parameter facetFilters it is possible to add the chosen facets attributes to narrow down the results:

$ curl --get 'http://localhost:7700/indexes/movies/search' \
    --data-urlencode 'q=Get' \
    --data-urlencode 'facetFilters=["director:Jordan Peele"]'
Search for movies by a specific director

This is all explained in our guide on Faceting.

SSL support

All the configuration options to enable SSL are now available.

Learn more about it in our configuration guide.

Max payload size

In the early versions of Meilisearch, there was no limit to the size of the body Meilisearch accepted. This version introduces the standard default limit of a maximum payload of 10 Megabytes and the possibility of changing the limit.

$ ./meilisearch --http-payload-size-limit=107374182400
Change the upload limit to 100 Megabytes

Improved analytics

To further understand how our users use Meilisearch and how to improve it, more analytics are added.

A complete list can be found here.

Users can deactivate analytics by using the following command line option:

$ ./meilisearch --no-analytics

Conclusion

Those are the main changes in this version. For a more thorough list, please visit the changelogs of this version.

We are eager to hear some feedback. Feel free to come and talk to us any way you prefer. We are thrilled by all the support given to our search engine and the never-ending growth in users and stars.

Thanks a lot,

The Meilisearch team and the girl with big feet. 🦶