Guides / Managing results / Refine results / Faceting

How to declare attributes for faceting with the API

On this page

Algolia lets you create categories based on specific attributes so users can filter search results by those categories. For example, if you have an index of books, you could categorize them by author and genre. This allows users to filter search results by their favorite author or discover new genres.

To enable this categorization, first declare the attributes genre and author as attributesForFaceting:

1
2
3
4
5
6
$index->setSettings([
  'attributesForFaceting' => [
    "category",
    "author"
  ]
]);

Sometimes, you may have many facet values. For instance, if you have a book index, you may also have a lot of different authors. The engine can’t return more than 1,000 values per facet, so if you have more than that, you may want to let your users search for them. Do this by using the searchable modifier.

1
2
3
4
5
6
$index->setSettings([
  'attributesForFaceting' => [
    "category",
    "searchable(author)"
  ]
]);

If you only need the filtering feature, use filterOnly to reduce the index size and improve search speed. For example, you could automatically filter what genre the users can search based on the section of your website they’re on(without displaying genre as a clickable filter).

1
2
3
4
5
6
$index->setSettings([
  'attributesForFaceting' => [
    "filterOnly(category)",
    "author"
  ]
]);

Don’t include colons (:) in attribute names that you want to use for faceting because the filters syntax relies on that character as a delimiter.

See also

Did you find this page helpful?