From 3d60bbdcdeaf8f69541935f332b4a55dbe6d89b1 Mon Sep 17 00:00:00 2001 From: Yury Melnichek Date: Tue, 27 Sep 2011 00:39:55 +0200 Subject: [PATCH] [search] For now, rank by search rank only. --- search/intermediate_result.cpp | 11 ++++++++--- search/intermediate_result.hpp | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/search/intermediate_result.cpp b/search/intermediate_result.cpp index f3965f8050..050ee77a9f 100644 --- a/search/intermediate_result.cpp +++ b/search/intermediate_result.cpp @@ -21,6 +21,7 @@ IntermediateResult::IntermediateResult(m2::RectD const & viewportRect, m_type = types.m_types[0]; m_distance = ResultDistance(viewportRect.Center(), m_rect.Center()); m_direction = ResultDirection(viewportRect.Center(), m_rect.Center()); + m_searchRank = feature.GetSearchRank(); } IntermediateResult::IntermediateResult(m2::RectD const & viewportRect, @@ -28,7 +29,7 @@ IntermediateResult::IntermediateResult(m2::RectD const & viewportRect, : m_str("(" + strings::to_string(lat) + ", " + strings::to_string(lon) + ")"), m_rect(MercatorBounds::LonToX(lon - precision), MercatorBounds::LatToY(lat - precision), MercatorBounds::LonToX(lon + precision), MercatorBounds::LatToY(lat + precision)), - m_type(0), m_resultType(RESULT_LATLON) + m_type(0), m_resultType(RESULT_LATLON), m_searchRank(0) { m_distance = ResultDistance(viewportRect.Center(), m_rect.Center()); m_direction = ResultDirection(viewportRect.Center(), m_rect.Center()); @@ -37,7 +38,8 @@ IntermediateResult::IntermediateResult(m2::RectD const & viewportRect, IntermediateResult::IntermediateResult(string name, string completionString, int penalty) : m_str(name), m_completionString(completionString), m_distance(0), m_direction(0), - m_resultType(RESULT_CATEGORY) + m_resultType(RESULT_CATEGORY), + m_searchRank(0) { } @@ -45,6 +47,8 @@ bool IntermediateResult::operator < (IntermediateResult const & o) const { if (m_resultType != o.m_resultType) return m_resultType < o.m_resultType; + if (m_searchRank != o.m_searchRank) + return m_searchRank > o.m_searchRank; if (m_distance != o.m_distance) return m_distance < o.m_distance; return false; @@ -55,7 +59,8 @@ Result IntermediateResult::GenerateFinalResult() const switch (m_resultType) { case RESULT_FEATURE: - return Result(m_str, m_type, m_rect, m_distance, m_direction); + return Result(m_str + ' ' + strings::to_string(static_cast(m_searchRank)), + m_type, m_rect, m_distance, m_direction); case RESULT_LATLON: return Result(m_str, 0, m_rect, m_distance, m_direction); case RESULT_CATEGORY: diff --git a/search/intermediate_result.hpp b/search/intermediate_result.hpp index 4a3991cdf6..e65067022d 100644 --- a/search/intermediate_result.hpp +++ b/search/intermediate_result.hpp @@ -44,6 +44,7 @@ private: double m_distance; double m_direction; ResultType m_resultType; + uint8_t m_searchRank; }; } // namespace search::impl