diff options
Diffstat (limited to 'search')
-rw-r--r-- | search/downloader_search_callback.cpp | 4 | ||||
-rw-r--r-- | search/downloader_search_callback.hpp | 5 | ||||
-rw-r--r-- | search/emitter.hpp | 10 | ||||
-rw-r--r-- | search/processor.cpp | 4 | ||||
-rw-r--r-- | search/search_integration_tests/downloader_search_test.cpp | 4 | ||||
-rw-r--r-- | search/search_params.cpp | 2 | ||||
-rw-r--r-- | search/search_params.hpp | 21 | ||||
-rw-r--r-- | search/search_quality/assessment_tool/search_request_runner.cpp | 3 | ||||
-rw-r--r-- | search/search_tests/bookmarks_processor_tests.cpp | 2 | ||||
-rw-r--r-- | search/search_tests_support/test_search_request.cpp | 6 | ||||
-rw-r--r-- | search/search_tests_support/test_search_request.hpp | 2 | ||||
-rw-r--r-- | search/utils.hpp | 4 |
12 files changed, 41 insertions, 26 deletions
diff --git a/search/downloader_search_callback.cpp b/search/downloader_search_callback.cpp index b155049a8b..80382569ba 100644 --- a/search/downloader_search_callback.cpp +++ b/search/downloader_search_callback.cpp @@ -1,6 +1,7 @@ #include "search/downloader_search_callback.hpp" #include "search/result.hpp" +#include "search/search_params.hpp" #include "editor/editable_data_source.hpp" @@ -50,7 +51,8 @@ DownloaderSearchCallback::DownloaderSearchCallback(Delegate & delegate, { } -void DownloaderSearchCallback::operator()(search::Results const & results) +void DownloaderSearchCallback::operator()(Results const & results, + SearchParamsBase const & /* params */) { storage::DownloaderSearchResults downloaderSearchResults; std::set<storage::DownloaderSearchResult> uniqueResults; diff --git a/search/downloader_search_callback.hpp b/search/downloader_search_callback.hpp index 066957849b..0db540d7a2 100644 --- a/search/downloader_search_callback.hpp +++ b/search/downloader_search_callback.hpp @@ -1,5 +1,7 @@ #pragma once +#include "search/search_params.hpp" + #include "storage/downloader_search_params.hpp" #include <functional> @@ -15,6 +17,7 @@ class Storage; namespace search { class Results; +struct SearchParamsBase; // An on-results callback that should be used for the search in downloader. // @@ -35,7 +38,7 @@ public: storage::Storage const & storage, storage::DownloaderSearchParams params); - void operator()(search::Results const & results); + void operator()(Results const & results, SearchParamsBase const &); private: Delegate & m_delegate; diff --git a/search/emitter.hpp b/search/emitter.hpp index 9b7474be13..ddd07a6adc 100644 --- a/search/emitter.hpp +++ b/search/emitter.hpp @@ -17,9 +17,10 @@ struct Result; class Emitter { public: - void Init(SearchParams::OnResults onResults) + void Init(SearchParams const & params) { - m_onResults = onResults; + m_params = static_cast<SearchParamsBase>(params); + m_onResults = params.m_onResults; m_results.Clear(); } @@ -31,7 +32,7 @@ public: void Emit() { if (m_onResults) - m_onResults(m_results); + m_onResults(m_results, m_params); else LOG(LERROR, ("OnResults is not set.")); } @@ -42,12 +43,13 @@ public: { m_results.SetEndMarker(cancelled); if (m_onResults) - m_onResults(m_results); + m_onResults(m_results, m_params); else LOG(LERROR, ("OnResults is not set.")); } private: + SearchParamsBase m_params; SearchParams::OnResults m_onResults; Results m_results; }; diff --git a/search/processor.cpp b/search/processor.cpp index 913d8e1f45..2aa89c8cff 100644 --- a/search/processor.cpp +++ b/search/processor.cpp @@ -384,7 +384,7 @@ void Processor::Search(SearchParams const & params) results.SetEndMarker(true /* isCancelled */); if (params.m_onResults) - params.m_onResults(results); + params.m_onResults(results, params); else LOG(LERROR, ("OnResults is not set.")); return; @@ -610,7 +610,7 @@ void Processor::InitRanker(Geocoder::Params const & geocoderParams, void Processor::InitEmitter(SearchParams const & searchParams) { - m_emitter.Init(searchParams.m_onResults); + m_emitter.Init(searchParams); } void Processor::ClearCaches() diff --git a/search/search_integration_tests/downloader_search_test.cpp b/search/search_integration_tests/downloader_search_test.cpp index 4cfe30f3eb..295bdd8aec 100644 --- a/search/search_integration_tests/downloader_search_test.cpp +++ b/search/search_integration_tests/downloader_search_test.cpp @@ -119,8 +119,8 @@ public: void OnResultsDownloader(search::Results const & results) { - m_downloaderCallback(results); - OnResults(results); + m_downloaderCallback(results, {}); + OnResults(results, {}); } vector<storage::DownloaderSearchResult> const & GetResults() const { return m_downloaderResults; } diff --git a/search/search_params.cpp b/search/search_params.cpp index 3c97e78cf3..261d9fee66 100644 --- a/search/search_params.cpp +++ b/search/search_params.cpp @@ -12,7 +12,7 @@ using namespace std; namespace search { -bool SearchParams::IsEqualCommon(SearchParams const & rhs) const +bool SearchParamsBase::IsEqualCommon(SearchParamsBase const & rhs) const { return m_query == rhs.m_query && m_inputLocale == rhs.m_inputLocale && static_cast<bool>(m_position) == static_cast<bool>(rhs.m_position) && m_mode == rhs.m_mode; diff --git a/search/search_params.hpp b/search/search_params.hpp index dd151003e2..12c4650004 100644 --- a/search/search_params.hpp +++ b/search/search_params.hpp @@ -18,22 +18,16 @@ namespace search class Results; class Tracer; -struct SearchParams +struct SearchParamsBase { static size_t const kDefaultNumBookmarksResults = 1000; static size_t const kDefaultNumResultsEverywhere = 30; static size_t const kDefaultNumResultsInViewport = 200; - using OnStarted = std::function<void()>; - using OnResults = std::function<void(Results const &)>; - - bool IsEqualCommon(SearchParams const & rhs) const; + bool IsEqualCommon(SearchParamsBase const & rhs) const; void Clear() { m_query.clear(); } - OnStarted m_onStarted; - OnResults m_onResults; - std::string m_query; std::string m_inputLocale; @@ -56,9 +50,18 @@ struct SearchParams // Needed to highlight matching parts of search result names. bool m_needHighlighting = false; +}; - std::shared_ptr<hotels_filter::Rule> m_hotelsFilter; +// Note: inheritance for aggregation data only, any of polymorphic usage is not supported. +struct SearchParams : SearchParamsBase +{ + using OnStarted = std::function<void()>; + using OnResults = std::function<void(Results const &, SearchParamsBase const &)>; + + OnStarted m_onStarted; + OnResults m_onResults; + std::shared_ptr<hotels_filter::Rule> m_hotelsFilter; std::shared_ptr<Tracer> m_tracer; }; diff --git a/search/search_quality/assessment_tool/search_request_runner.cpp b/search/search_quality/assessment_tool/search_request_runner.cpp index b031d8ce1d..7e804e1223 100644 --- a/search/search_quality/assessment_tool/search_request_runner.cpp +++ b/search/search_quality/assessment_tool/search_request_runner.cpp @@ -89,7 +89,8 @@ void SearchRequestRunner::RunRequest(size_t index, bool background, size_t times search::SearchParams params; sample.FillSearchParams(params); - params.m_onResults = [=](search::Results const & results) { + params.m_onResults = [=](search::Results const & results, + search::SearchParamsBase const & /* params */) { vector<boost::optional<ResultsEdits::Relevance>> relevances; vector<size_t> goldenMatching; vector<size_t> actualMatching; diff --git a/search/search_tests/bookmarks_processor_tests.cpp b/search/search_tests/bookmarks_processor_tests.cpp index 3d11f53514..5e71d9d38d 100644 --- a/search/search_tests/bookmarks_processor_tests.cpp +++ b/search/search_tests/bookmarks_processor_tests.cpp @@ -31,7 +31,7 @@ public: Ids Search(string const & query) { - m_emitter.Init([](::search::Results const & /* results */) {} /* onResults */); + m_emitter.Init({}); vector<strings::UniString> tokens; auto const isPrefix = diff --git a/search/search_tests_support/test_search_request.cpp b/search/search_tests_support/test_search_request.cpp index 75b2666b3c..226cdbc4a2 100644 --- a/search/search_tests_support/test_search_request.cpp +++ b/search/search_tests_support/test_search_request.cpp @@ -84,7 +84,8 @@ void TestSearchRequest::Wait() void TestSearchRequest::SetUpCallbacks() { m_params.m_onStarted = bind(&TestSearchRequest::OnStarted, this); - m_params.m_onResults = bind(&TestSearchRequest::OnResults, this, placeholders::_1); + m_params.m_onResults = + bind(&TestSearchRequest::OnResults, this, placeholders::_1, placeholders::_2); } void TestSearchRequest::SetUpResultParams() @@ -113,7 +114,8 @@ void TestSearchRequest::OnStarted() m_startTime = m_timer.TimeElapsed(); } -void TestSearchRequest::OnResults(search::Results const & results) +void TestSearchRequest::OnResults(search::Results const & results, + search::SearchParamsBase const & /* params */) { lock_guard<mutex> lock(m_mu); m_results.assign(results.begin(), results.end()); diff --git a/search/search_tests_support/test_search_request.hpp b/search/search_tests_support/test_search_request.hpp index 450f25418f..b6fafdb7a2 100644 --- a/search/search_tests_support/test_search_request.hpp +++ b/search/search_tests_support/test_search_request.hpp @@ -52,7 +52,7 @@ protected: void SetUpResultParams(); void OnStarted(); - void OnResults(search::Results const & results); + void OnResults(search::Results const & results, SearchParamsBase const &); // Overrides the default onResults callback. void SetCustomOnResults(SearchParams::OnResults const & onResults); diff --git a/search/utils.hpp b/search/utils.hpp index 91fe0515ea..e468c47635 100644 --- a/search/utils.hpp +++ b/search/utils.hpp @@ -131,6 +131,8 @@ using FeatureIndexCallback = std::function<void(FeatureID const &)>; void ForEachOfTypesInRect(DataSource const & dataSource, std::vector<uint32_t> const & types, m2::RectD const & rect, FeatureIndexCallback const & fn); -// Returns true iff |query| contains |categoryEn| synonym. +// Returns true iff |query| contains |categoryName| synonym. +// |query| - search query in any language. +// |categoryName| - name of category in English. bool IsCategorialRequestFuzzy(std::string const & query, std::string const & categoryName); } // namespace search |