You can use Query Rules to detect a specific word and modify a query setting because of this word.

Limiting the search to only a subset of attributes

Use Case - Title or ID (SKU) searches

A good example of altering a query is with an online document library that allows keyword searches inside documents. If a user types in the word “article ref21”, they are probably signalling to the system that they are looking for an article whose title or ID contains “ref21”.

Rule

If query = “article ref21” then remove article and search for an article whose title or ID contains ‘ref21’

API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// turn json into an array
$rule = array(
  'objectID' => 'article',
  'condition' => array(
    'pattern' => 'article',
    'anchoring' => 'startsWith'
  ),
  'consequence' => array(
    'params' => array(
      'query' => array(
        'remove' => 'article'
      ),
      'restrictSearchableAttributes' => array(
        'title',
        'book_id'
      )
    )
  )
);

// push rule to index
$index->saveRule($rule);

Dashboard

You can also add your rules in your Algolia dashboard.

  • Go to your dashboard and select your index.
  • Click the Query Rules tab.
  • Click the New rule button.
  • In the Condition section:
    • In the If the query… input field, set the anchoring to Contains.
    • Type “article” in the input field and press Enter.
  • In the Consequences section:
    • Click the Add consequence button and select Add Query Parameter.
    • In the Custom JSON Data panel that shows up, add: { "restrictSearchableAttributes": ["title","id"] }
    • Click the Add consequence button and select Remove Word.
    • Type “article” in the input field and press Enter.
  • Click Save.

Did you find this page helpful?