diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-01-31 14:38:59 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-01-31 14:40:00 +0000 |
commit | 72c41aa96f322d1ea06888b4ad4bf48078874409 (patch) | |
tree | 3ad21414a70233f994b608c02f98574b4a2032db | |
parent | 204b8694cf7b46e7b144e3c03db732fc8196c4de (diff) |
add extra output with distance in km
-rw-r--r-- | searchlib/src/vespa/searchlib/features/distancefeature.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/searchlib/src/vespa/searchlib/features/distancefeature.cpp b/searchlib/src/vespa/searchlib/features/distancefeature.cpp index 518ade2a8f5..57fa5fc7cee 100644 --- a/searchlib/src/vespa/searchlib/features/distancefeature.cpp +++ b/searchlib/src/vespa/searchlib/features/distancefeature.cpp @@ -135,10 +135,15 @@ DistanceExecutor::DistanceExecutor(GeoLocationSpecPtrs locations, void DistanceExecutor::execute(uint32_t docId) { - outputs().set_number(0, calculateDistance(docId)); + static constexpr double earth_mean_radius = 6371.0088; + static constexpr double deg_to_rad = M_PI / 180.0; + static constexpr double km_from_internal = 1.0e-6 * deg_to_rad * earth_mean_radius; + feature_t internal_d = calculateDistance(docId); + outputs().set_number(0, internal_d); outputs().set_number(1, _best_index); outputs().set_number(2, _best_y * 1.0e-6); // latitude outputs().set_number(3, _best_x * 1.0e-6); // longitude + outputs().set_number(4, internal_d * km_from_internal); // km } const feature_t DistanceExecutor::DEFAULT_DISTANCE(6400000000.0); @@ -178,6 +183,7 @@ DistanceBlueprint::setup_geopos(const IIndexEnvironment & env, describeOutput("index", "Index in array of closest point"); describeOutput("latitude", "Latitude of closest point"); describeOutput("longitude", "Longitude of closest point"); + describeOutput("km", "Distance in kilometer units"); env.hintAttributeAccess(_arg_string); return true; } |