Guides / Managing results / Refine results / Filtering

Algolia allows you to numerically filter results, via a comparison or a range. This only works if you’re using numeric values. Imagine you have an e-commerce website, and you want to filter by price. With filters, you could allow users to refine results and only see items which cost more or less than a certain price, or those comprised in a specific price range.

Dataset Example

Let’s say we have an index called products that looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
  {
    "name": "Samsung Galaxy",
    "description": "Samsung Galaxy Express 3 4G LTE with 8GB Memory Prepaid Cell Phone",
    "price": 49.99
  },
  {
    "name": "AT&T GoPhone - Apple iPhone 5s 4G LTE 16GB Memory Prepaid Cell Phone w\/Airtime Card - Gray",
    "description": "Enjoy exceptional service on a popular phone with this AT&T GoPhone iPhone 5s. Enjoy all the features of the iPhone 5s, including its 4-inch Retina display and 8.0-megapixel camera, in tandem with AT&T's GoPhone mobile service, which provides a flexible plan with no annual contract. Stay connected with family and friends with this AT&T GoPhone iPhone 5s.",
    "price": 194.99
  },
  {
    "name": "Huawei - Mate 9 4G LTE with 64GB Memory Cell Phone (Unlocked) - Space Gray",
    "description": "Keep connected on the go with this unlocked Huawei Mate9 smartphone. Its Kirin 960 processor delivers blazing performance, while the 4000 mAh battery and power-saving technology provide up to 2 days of usage. The glamorous 5.9-inch Full HD display delivers immersive visuals, while 3D fingerprint recognition technology keeps this 64GB Huawei Mate9 smartphone secure and safe.",
    "price": 599.99
  },
  ...
]

Notice that we’re using numeric values for the price attribute, not strings. This way, Algolia can interpret them when using comparison or range operators.

Applying a numeric filter

Setting a limit

Imagine we want to let users define a price limit over which they don’t want to retrieve results. For example, they may want to look for a phone under $100.

Algolia filters use an SQL-like syntax, which allows you to use comparison operators.

1
2
3
$results = $index->search('query', [
  'filters' => 'price < 100'
]);

Algolia supports <, <=, =, !=, >= and > operators with the same semantics as in virtually all programming languages.

Filtering by price range

Now imagine we only want to retrieve products between $100 and $200. We can achieve this by setting a range filter.

1
2
3
$results = $index->search('query', [
  'filters' => 'price:100 TO 200'
]);

Did you find this page helpful?