summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-01-31 14:38:59 +0000
committerArne H Juul <arnej@yahooinc.com>2022-01-31 14:40:00 +0000
commit72c41aa96f322d1ea06888b4ad4bf48078874409 (patch)
tree3ad21414a70233f994b608c02f98574b4a2032db
parent204b8694cf7b46e7b144e3c03db732fc8196c4de (diff)
add extra output with distance in km
-rw-r--r--searchlib/src/vespa/searchlib/features/distancefeature.cpp8
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;
}