Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/search
diff options
context:
space:
mode:
authorMaxim Pimenov <m@maps.me>2016-07-07 13:47:38 +0300
committerMaxim Pimenov <m@maps.me>2016-07-07 13:48:22 +0300
commitc8054c1939c10cf9c537dc60903d89d33975cd83 (patch)
treefe7e0789eb2ee3f0b94180d7a8269f5368d05fad /search
parentad44499b38ba56ae87e788f1da3c3b54e58718b1 (diff)
Review fixes.
Diffstat (limited to 'search')
-rw-r--r--search/pre_ranker.cpp5
-rw-r--r--search/pre_ranker.hpp13
-rw-r--r--search/processor.cpp25
-rw-r--r--search/processor.hpp4
-rw-r--r--search/ranker.cpp10
-rw-r--r--search/ranker.hpp7
6 files changed, 35 insertions, 29 deletions
diff --git a/search/pre_ranker.cpp b/search/pre_ranker.cpp
index 3e298062e6..8eb94a74a2 100644
--- a/search/pre_ranker.cpp
+++ b/search/pre_ranker.cpp
@@ -149,8 +149,9 @@ void PreRanker::Filter(bool viewportSearch)
void PreRanker::FinalizeResults()
{
FillMissingFieldsInResults();
- Filter(m_params.m_viewportSearch);
- m_ranker.SetPreResults1(&m_results);
+ Filter(m_viewportSearch);
+ m_ranker.SetPreResults1(move(m_results));
+ m_results.clear();
}
void PreRanker::ClearCaches() { m_pivotFeatures.Clear(); }
diff --git a/search/pre_ranker.hpp b/search/pre_ranker.hpp
index ab24158190..85b3d9ff5d 100644
--- a/search/pre_ranker.hpp
+++ b/search/pre_ranker.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "indexer/index.hpp"
-
#include "search/intermediate_result.hpp"
#include "search/nested_rects_cache.hpp"
#include "search/ranker.hpp"
+#include "indexer/index.hpp"
+
#include "geometry/point2d.hpp"
#include "base/macros.hpp"
@@ -23,8 +23,6 @@ class PreRanker
public:
struct Params
{
- bool m_viewportSearch = false;
-
// This is different from geocoder's pivot because pivot is
// usually a rectangle created by radius and center and, due to
// precision loss, its center may differ from
@@ -36,9 +34,10 @@ public:
int m_scale = 0;
};
- explicit PreRanker(Index const & index, Ranker & ranker, size_t limit);
+ PreRanker(Index const & index, Ranker & ranker, size_t limit);
- void Init(bool viewportSearch) { m_params.m_viewportSearch = viewportSearch; }
+ inline void Init(Params const & params) { m_params = params; }
+ inline void SetViewportSearch(bool viewportSearch) { m_viewportSearch = viewportSearch; }
template <typename... TArgs>
void Emplace(TArgs &&... args)
{
@@ -65,7 +64,6 @@ public:
for_each(m_results.begin(), m_results.end(), forward<TFn>(fn));
}
- void SetParams(Params const & params) { m_params = params; }
void ClearCaches();
private:
@@ -74,6 +72,7 @@ private:
vector<PreResult1> m_results;
size_t const m_limit;
Params m_params;
+ bool m_viewportSearch = false;
// Cache of nested rects used to estimate distance from a feature to the pivot.
NestedRectsCache m_pivotFeatures;
diff --git a/search/processor.cpp b/search/processor.cpp
index 712202bc61..2d0dadd79d 100644
--- a/search/processor.cpp
+++ b/search/processor.cpp
@@ -133,7 +133,7 @@ void Processor::Init(bool viewportSearch)
m_tokens.clear();
m_prefix.clear();
m_preRanker.Clear();
- m_preRanker.Init(viewportSearch);
+ m_preRanker.SetViewportSearch(viewportSearch);
}
void Processor::SetViewport(m2::RectD const & viewport, bool forceUpdate)
@@ -345,11 +345,8 @@ void Processor::Search(Results & results, size_t limit)
Geocoder::Params geocoderParams;
InitGeocoderParams(geocoderParams);
- PreRanker::Params preRankerParams;
- InitPreRankerParams(preRankerParams);
-
- Ranker::Params rankerParams;
- InitRankerParams(rankerParams);
+ InitPreRanker();
+ InitRanker();
if (m_tokens.empty())
m_ranker.SuggestStrings(results);
@@ -369,11 +366,11 @@ void Processor::SearchViewportPoints(Results & results)
PreRanker::Params preRankerParams;
preRankerParams.m_accuratePivotCenter = geocoderParams.m_pivot.Center();
- m_preRanker.SetParams(preRankerParams);
+ m_preRanker.Init(preRankerParams);
Ranker::Params rankerParams;
rankerParams.m_accuratePivotCenter = geocoderParams.m_pivot.Center();
- m_ranker.SetParams(rankerParams);
+ m_ranker.Init(rankerParams);
m_geocoder.GoInViewport();
m_ranker.FlushViewportResults(geocoderParams, results);
@@ -601,14 +598,18 @@ void Processor::InitGeocoderParams(Geocoder::Params & params)
m_geocoder.SetParams(params);
}
-void Processor::InitPreRankerParams(PreRanker::Params & params)
+void Processor::InitPreRanker()
{
+ PreRanker::Params params;
+
params.m_accuratePivotCenter = GetPivotPoint();
- m_preRanker.SetParams(params);
+ m_preRanker.Init(params);
}
-void Processor::InitRankerParams(Ranker::Params & params)
+void Processor::InitRanker()
{
+ Ranker::Params params;
+
params.m_currentLocaleCode = m_currentLocaleCode;
if (m_mode == Mode::Viewport)
params.m_viewport = GetViewport();
@@ -621,7 +622,7 @@ void Processor::InitRankerParams(Ranker::Params & params)
params.m_prefix = m_prefix;
params.m_categoryLocales = GetCategoryLocales();
params.m_accuratePivotCenter = GetPivotPoint();
- m_ranker.SetParams(params);
+ m_ranker.Init(params);
}
void Processor::ClearCaches()
diff --git a/search/processor.hpp b/search/processor.hpp
index 21db6bf34d..696164d024 100644
--- a/search/processor.hpp
+++ b/search/processor.hpp
@@ -104,8 +104,8 @@ public:
void InitParams(QueryParams & params);
void InitGeocoderParams(Geocoder::Params & params);
- void InitPreRankerParams(PreRanker::Params & params);
- void InitRankerParams(Ranker::Params & params);
+ void InitPreRanker();
+ void InitRanker();
void ClearCaches();
diff --git a/search/ranker.cpp b/search/ranker.cpp
index 63f0d4782c..9303f3a3cb 100644
--- a/search/ranker.cpp
+++ b/search/ranker.cpp
@@ -281,6 +281,12 @@ Ranker::Ranker(Index const & index, storage::CountryInfoGetter const & infoGette
{
}
+void Ranker::Init(Params const & params)
+{
+ m_params = params;
+ m_preResults1.clear();
+}
+
bool Ranker::IsResultExists(PreResult2 const & p, vector<IndexedValue> const & values)
{
PreResult2::StrictEqualF equalCmp(p);
@@ -294,10 +300,8 @@ bool Ranker::IsResultExists(PreResult2 const & p, vector<IndexedValue> const & v
void Ranker::MakePreResult2(Geocoder::Params const & geocoderParams, vector<IndexedValue> & cont,
vector<FeatureID> & streets)
{
- if (m_preResults1 == nullptr)
- return;
PreResult2Maker maker(*this, m_index, m_infoGetter, geocoderParams);
- for (auto const & r : *m_preResults1)
+ for (auto const & r : m_preResults1)
{
auto p = maker(r);
if (!p)
diff --git a/search/ranker.hpp b/search/ranker.hpp
index 0bf29fd8ef..c97b1c72c3 100644
--- a/search/ranker.hpp
+++ b/search/ranker.hpp
@@ -68,6 +68,8 @@ public:
CategoriesHolder const & categories, vector<Suggest> const & suggests,
my::Cancellable const & cancellable);
+ void Init(Params const & params);
+
bool IsResultExists(PreResult2 const & p, vector<IndexedValue> const & values);
void MakePreResult2(Geocoder::Params const & params, vector<IndexedValue> & cont,
@@ -86,8 +88,7 @@ public:
void FlushResults(Geocoder::Params const & geocoderParams, Results & res, size_t resCount);
void FlushViewportResults(Geocoder::Params const & geocoderParams, Results & res);
- void SetParams(Params const & params) { m_params = params; }
- void SetPreResults1(vector<PreResult1> * preResults1) { m_preResults1 = preResults1; }
+ void SetPreResults1(vector<PreResult1> && preResults1) { m_preResults1 = move(preResults1); }
void ClearCaches();
#ifdef FIND_LOCALITY_TEST
@@ -134,6 +135,6 @@ private:
CategoriesHolder const & m_categories;
vector<Suggest> const & m_suggests;
- vector<PreResult1> * m_preResults1 = nullptr;
+ vector<PreResult1> m_preResults1;
};
} // namespace search