diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-01-28 13:47:27 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-01-28 13:47:48 +0000 |
commit | 36e390ed82d54aaee95133e5dccd460e915e544e (patch) | |
tree | 2e4078b43a1ff2422f985da327e5be73b67bf500 /streamingvisitors/src/vespa/searchvisitor/queryenvironment.cpp | |
parent | 5d45925095457bd71b3b4416ff4942fcddd77780 (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.cpp | 13 |
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 { |