- Positive filters include a specific subset of matching records in the results. For example, if a user types “diet” on a restaurant website, return every record that has “low-carb” or “low-fat”.
- Negative filters exclude matching records from results. For example, if a user types “gluten-free” on a restaurant website, you could filter out any gluten-containing meal.
- Numerical filters convert text queries into a numerical range. For example, if a user types “cheap” on a website for kitchen appliances, you could filter out anything costing more than $50.
Positive filters
If you want to filter out every non-diet-friendly meal whenever user’s search queries contain the term “diet”, you could use the_tags
attribute to categorize meals depending on their individual qualities:
JSON
_tags
attribute. Because _tags
is already optimized for filtering, you don’t have to set it as an attribute for faceting. You can directly create a new Rule that detects the term “diet” in a query and applies a positive filter on tags “low-carb” and “low-fat”.
To use the term “diet” only for filtering and not as a search term,
add a consequence in your rule to remove the word from your query.
Using the API
To add a rule, use thesaveRule
method.
When creating a rule, you must define a condition and a consequence.
Using the dashboard
You can also add rules from the Algolia dashboard.- Go to the Algolia dashboard and select your Algolia application.
- On the left sidebar, select Search.
- Select your Algolia index.
- On the Rules page, click Create your first rule or New rule and select Manual Editor.
- In the Condition(s) sections, keep Query contains and enter “diet” in the input.
-
In the Consequence(s) section:
- Click the Add consequence button and select Add Query Parameter.
- In the input, enter the JSON search parameter you want to add. For example:
{ "filters": "'low-carb' OR 'low-fat'" }
. - Click the Add consequence button again and select Remove Word.
- Type or select “diet” in the input field.
- Save your changes.
Negative filters
To exclude gluten-containing foods from the search results, when a user searches for gluten-free meals: To do this:- Create an
allergens
attribute (with “gluten” as one of the potential values). - Create a rule that filters out records with “gluten” in that attribute.
Example records
JSON
Using the API
Setallergens
as an attributesForFaceting
in your index:
- Use the
saveRule
method to create a rule that detects the term “gluten-free” in a query and applies a negative filter on facet valueallergens:gluten
. - Add a consequence in your rule to remove the word “gluten-free” from your query. This way, it won’t be used as a search term, only for filtering purposes.
Using the dashboard
You can also add rules from the Algolia dashboard.- Go to the Algolia dashboard and select your Algolia application.
- On the left sidebar, select Search.
- Select your Algolia index and open the Configuration tab.
-
On the Filtering and Faceting > Facets page, click Add an attribute and select the
allergens
attribute. - On the Rules tab, click Create your first rule or New rule and select Manual Editor.
-
In the Condition(s) section, keep Query toggled on, select Contains, and enter
gluten-free
in the input. -
In the Consequence(s) section:
- Click the Add consequence button and select Add Query Parameter.
- In the input field that appears, enter the JSON search parameter you want to add. For example:
{ "filters": "NOT allergens:gluten" }
- Click the Add consequence button again and select Remove Word.
- Enter
gluten-free
in the input.
- Save your changes.
Numerical filters
Consider the query “cheap toaster 800w”. You can use Rules to filter the results by “toaster” and “prices between 0 and 25” so that the only textual search is the remaining term, “800w”, which could further be used to limit the results with that wattage.Rule
Ifquery = "cheap toaster"
then price < 10
and type=toaster
.
This requires two rules.
Using the API
Using the dashboard
Since there are two rules, you must set up both separately.Preparation
- Go to the Algolia dashboard and select your Algolia application.
- On the left sidebar, select Search.
- Select your Algolia index and open the Configuration tab.
- On the Filtering and Facets page,
click Add an attribute and select the
product_type
attribute.
For the first rule
- Go to the Rules in the Algolia dashboard.
- Select Create your first rule or New rule and select Manual Editor.
-
In the Condition(s) section, keep Query toggled on, select Contains, and enter
toaster
in the input. -
In the Consequence(s) section:
- Click Add consequence and select Add Query Parameter.
- In the input, add the JSON parameters you want to apply when the user’s query matches the Rule:
{ "filters": "product_type:toaster" }
- Click Add consequence again and select Remove Word.
- Enter “toaster” in the input.
- Save your changes.
For the second rule
- On the Rules page, click New rule and select Manual Editor.
-
In the Condition(s) section, keep Query toggled on, select Contains, and enter
cheap
in the input. -
In the Consequence(s) section:
- Click Add consequence and select Add Query Parameter.
- In the input, add the JSON parameters you want to apply when the user’s query matches the Rule:
{ "filters": "price<10" }
- Click Add consequence again and select Remove Word.
- Enter
cheap
in the input.
- Save your changes.