Details

Type: Improvement

Status: Closed

Priority: Minor

Resolution: Fixed

Affects Version/s: None

Component/s: modules/other

Labels:None

Lucene Fields:New, Patch Available
Description
SloppyMath, intriduced in LUCENE5258, uses earth's avg. (according to WGS84) ellipsoid radius as an approximation for computing the "spherical" distance. (The TO_KILOMETERS constant).
While this is pretty accurate for long distances (latitude wise) this may introduce some small errors while computing distances close to the equator (as the earth radius there is larger than the avg.)
A more accurate approximation would be taking the avg. earth radius at the source and destination points. But computing an ellipsoid radius at any given point is a heavy function, and this distance should be used in a scoring function.. So two optimizations are optional 
 Precompute a table with an earth radius per latitude (the longitude does not affect the radius)
 Instead of using two point radius avg, figure out the avg. latitude (exactly between the src and dst points) and get its radius.
A proposed solution as per described.
Please note it is not ready for commit as it breaks one of the tests derived for ES/Solr (as a result of the improved accuracy).