Troubleshooting Relevance
Troubleshooting Overview
Our docs are written to reach the widest audience. We do not try to address every situation that our customers will face. At some point, more individualized guidance is required.
For this, we offer several strategies to help you troubleshoot:
- Get ranking information with the
getRankingInfo
parameter. This parameter allows you to look at and analyze the criteria Algolia uses to rank results. For a given query it returns the value for each ranking criteria. By understanding those values you can understand why a result appears before or after another. See more below. - Reproducing a problem on a small dataset and solving it by process of elimination. This strategy can be used alongside the
getRankingInfo
parameter. It helps you improve the results of specific queries. The idea is to create a very small index that mirrors your main index, and to test different configurations one-by-one until you’ve singled out the problem or inefficiency. - Analytics and Insights. This allows you to follow your users’ behavior with Analytics. See more about this in our Analytics guide.
The Engine’s Ranking Decisions
You can find out why a record is ranked the way it is, and use this information to troubleshoot your data and relevance settings. You can do this in the Dashboard or via the API.
Troubleshooting in the dashboard
If you go to your dashboard and search, you have a “Ranking Info” section that details how Algolia ranked this record.
If you look at the second hit, you’ll have the difference between this object and the one above it.
Troubleshoot via the API
Ranking information can be retrieved via the API. For that, you need to use the parameter getRankingInfo
and set it to true.
Initialize the client
1
2
3
4
5
6
7
8
9
10
11
12
// composer autoload
require __DIR__ . '/vendor/autoload.php';
// if you are not using composer
// require_once 'path/to/algoliasearch.php';
$client = \Algolia\AlgoliaSearch\SearchClient::create(
'YourApplicationID',
'YourWriteAPIKey'
);
$index = $client->initIndex('your_index_name');
Search with getRankingInfo
1
2
3
4
5
6
7
$results = $index->search('query', [
'getRankingInfo' => true
]);
//foreach ($results['hits'] as $hit) {
// var_dump($hit['_rankingInfo']);
//}
This gives you ranking info
Take a look at the following results in the _rankingInfo
attribute:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
[...],
"_rankingInfo": {
"nbTypos": 0,
"firstMatchedWord": 0,
"proximityDistance": 0,
"userScore": 7,
"geoDistance": 1600,
"geoPrecision": 1,
"nbExactWords": 0,
"words": 0,
"filters": 0,
"matchedGeoLocation": {
"lat": 37.3688,
"lng": -122.036,
"distance": 1600
}
}
}