aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-01-28 13:47:27 +0000
committerArne H Juul <arnej@yahooinc.com>2022-01-28 13:47:48 +0000
commit36e390ed82d54aaee95133e5dccd460e915e544e (patch)
tree2e4078b43a1ff2422f985da327e5be73b67bf500 /streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
parent5d45925095457bd71b3b4416ff4942fcddd77780 (diff)
extract geo positions from query terms
* put them into query environment (for ranking)
Diffstat (limited to 'streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
index 076b847b32e..0765074e315 100644
--- a/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp
@@ -54,6 +54,19 @@ QueryEnvironment::QueryEnvironment(const string & location_str,
QueryEnvironment::~QueryEnvironment() {}
+void QueryEnvironment::addGeoLocation(const vespalib::string &field, const vespalib::string &location_str) {
+ GeoLocationParser locationParser;
+ if (! locationParser.parseNoField(location_str)) {
+ LOG(warning, "Location parse error (location: '%s'): %s. Location ignored.",
+ location_str.c_str(), locationParser.getParseError());
+ return;
+ }
+ auto loc = locationParser.getGeoLocation();
+ if (loc.has_point) {
+ _locations.push_back(GeoLocationSpec{field, loc});
+ }
+}
+
QueryEnvironment::GeoLocationSpecPtrs
QueryEnvironment::getAllLocations() const
{