From 39d7c7ef32a9c1e4f1e569cdbb5ae24da23a759d Mon Sep 17 00:00:00 2001 From: vng Date: Tue, 12 Jan 2016 16:03:37 +0300 Subject: [PATCH] [search] Do filter at the end of greedy street match. --- search/v2/geocoder.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/search/v2/geocoder.cpp b/search/v2/geocoder.cpp index 023cb3606f..1d79368559 100644 --- a/search/v2/geocoder.cpp +++ b/search/v2/geocoder.cpp @@ -490,24 +490,24 @@ void Geocoder::GreedilyMatchStreets() { if (IsStreetSynonym(m_params.GetTokens(curToken).front())) continue; + if (startToken == curToken || coding::CompressedBitVector::IsEmpty(allFeatures)) - { buffer = coding::CompressedBitVector::Intersect(*m_streets, *m_addressFeatures[curToken]); - if (m_filter.NeedToFilter(*buffer)) - buffer = m_filter.Filter(*buffer); - } else - { buffer = coding::CompressedBitVector::Intersect(*allFeatures, *m_addressFeatures[curToken]); - } + if (coding::CompressedBitVector::IsEmpty(buffer)) break; + allFeatures.swap(buffer); } if (coding::CompressedBitVector::IsEmpty(allFeatures)) continue; + if (m_filter.NeedToFilter(*allFeatures)) + allFeatures = m_filter.Filter(*allFeatures); + auto & layer = m_layers.back(); layer.Clear(); layer.m_type = SearchModel::SEARCH_TYPE_STREET;