How Algolia handles coordinate precision
Algolia uses three distinct precisions when working with geolocations:- Indexed precision: the
lat/lngvalues you sent in_geoloc. Echoed back unchanged in each hit. - Internal precision: the values Algolia uses for geo-search. Stored at roughly 10 m resolution (4 decimal places).
- Display precision: how the engine prints internal values in
_rankingInfo.matchedGeoLocation.
_geoloc in your hits is preserved at the precision you indexed. The ranking and matchedGeoLocation fields use floored values.
Geo-search precision
Algolia searches geolocations with a default of about 10 m of resolution. Coordinates finer than that are floored to fit the grid. Search therefore by default treats two records within roughly 10 m of each other as the same point. You can widen this grid witharoundPrecision, but you can’t go below the 10 m floor.
The original
_geoloc you indexed is returned unchanged in each hit. Only the search and matchedGeoLocation use approximate values.What matchedGeoLocation returns
When you request getRankingInfo=true, each hit includes _rankingInfo.matchedGeoLocation with the lat, lng, and distance of the point that matched your geo-query.
These coordinates are Algolia’s floored internal value, not your original _geoloc.
To read the coordinates exactly as you sent them, use the
_geoloc field on the hit.Group results with aroundPrecision
Precision (using the search query parameter aroundPrecision) is used to group results that have more or less the same distance from a central point.
Algolia’s default precision is 10 meters.
However, a 10-meter difference might not be significant: intervals of 200 meters may make more sense.
By creating 200-meter intervals, you rank all that fall within that interval the same.
They’re ranked higher than all records between 200 and 400 meters.
If you set aroundPrecision to 200, you’ll have the following search results:
- Group of results in the 0-200 meters range will be the best ranked (ranked equally)
- Group of results in the 200-400 meters range will be ranked a bit lower
- Group of results in the 400-600 meters range will be ranked even lower
- Restaurant A with a 5 star rating and distance of 150 meters (farther)
- Restaurant B with a 3 star rating and distance of 100 meters (closer)
aroundPrecision to 200, restaurant A and B will be ranked equally: the distances of 150 and 100 will be considered equal to 0 (and distances of 250 and 210 will be equal to 200, and so on).
Going further, since the results of A and B are tied under the Geo criterion, the search engine will examine the other criteria in the ranking formula to further sort the results. Restaurant A will therefore be ranked higher in the result due to its higher rating.