How to Declare Attributes for Faceting
Algolia lets you create categories based on specific attributes so you can filter search results on them. For example, if you have an index of books, you may want to categorize them by author and genre. This way, your end users can filter on their favorite author or discover a new genre.
To do so, you first need to declare attributes
Using the API
author attributes available for both faceting and filtering, you need to apply the following setting:
1 2 3 4 5 6 $index->setSettings([ 'attributesForFaceting' => [ "category", "author" ] ]);
In some cases, you may have many facet values. In our example, if you have many books in your index, you may also have plenty of different authors. The engine can’t return more than 1000 values per facet, so if you have more, you may want to let your end-users search into them. You can achieve this by leveraging the
1 2 3 4 5 6 $index->setSettings([ 'attributesForFaceting' => [ "category", "searchable(author)" ] ]);
If you only need the filtering feature, you can take advantage of
filterOnly which reduces the index size and improves the speed of the search. Imagine you want to automatically filter what genre the end-users can search into based on what section of your website they’re on, without displaying genres as clickable filters. In this case, you only need filtering capabilities.
1 2 3 4 5 6 $index->setSettings([ 'attributesForFaceting' => [ "filterOnly(category)", "author" ] ]);
Make sure not to include colons (
:) in attribute names that you want to use for faceting, because the
filters syntax relies on that character as a delimiter.
Using the dashboard
- Go to your dashboard and select your index.
- Click the Configuration tab.
- Under the Filtering and Faceting category, click on Facets.
- In the Attributes for faceting section, click on Add an Attribute and select the attribute you wish to declare for faceting.
- For each attribute, click the dropdown on the right and set them as “searchable”, “filter only” or “not searchable”.
- Don’t forget to save your changes.