diff options
author | vng <viktor.govako@gmail.com> | 2012-02-15 22:52:45 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:34:08 +0300 |
commit | 53bcf037e7d850eb77c1bc7dfd964b31a5d43557 (patch) | |
tree | b30d8a7015e351e20da4f17a2bfdb4ae767336b4 /indexer/search_index_builder.cpp | |
parent | fd4d12b7c3bea550e964f93da08160f42304e66b (diff) |
[search] Do index only for visibly types in MWM. Closed #626.
Diffstat (limited to 'indexer/search_index_builder.cpp')
-rw-r--r-- | indexer/search_index_builder.cpp | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/indexer/search_index_builder.cpp b/indexer/search_index_builder.cpp index b155c67444..f468f55b71 100644 --- a/indexer/search_index_builder.cpp +++ b/indexer/search_index_builder.cpp @@ -7,6 +7,7 @@ #include "search_string_utils.hpp" #include "string_file.hpp" #include "classificator.hpp" +#include "feature_visibility.hpp" #include "../defines.hpp" @@ -67,6 +68,8 @@ class FeatureInserter typedef search::trie::ValueReader SaverT; SaverT m_valueSaver; + pair<int, int> m_scales; + class CalcPolyCenter { typedef m2::PointD P; @@ -220,8 +223,10 @@ class FeatureInserter }; public: - FeatureInserter(StringsFile & names, serial::CodingParams const & cp) - : m_names(names), m_valueSaver(cp) + FeatureInserter(StringsFile & names, + serial::CodingParams const & cp, + pair<int, int> const & scales) + : m_names(names), m_valueSaver(cp), m_scales(scales) { } @@ -246,20 +251,28 @@ public: // add names of categories of the feature for (size_t i = 0; i < types.Size(); ++i) - inserter.AddToken(search::CATEGORIES_LANG, search::FeatureTypeToString(types[i])); + { + // Do index only for visible types in mwm. + pair<int, int> const r = feature::DrawableScaleRangeForType(types[i]); + if (my::between_s(m_scales.first, m_scales.second, r.first) || + my::between_s(m_scales.first, m_scales.second, r.second)) + { + inserter.AddToken(search::CATEGORIES_LANG, search::FeatureTypeToString(types[i])); + } + } } }; } // unnamed namespace -void indexer::BuildSearchIndex(FeaturesVector const & featuresVector, Writer & writer, +void indexer::BuildSearchIndex(FeaturesVector const & featuresV, Writer & writer, string const & tmpFilePath) { { StringsFile names(tmpFilePath); - serial::CodingParams cp(search::GetCPForTrie(featuresVector.GetCodingParams())); + serial::CodingParams cp(search::GetCPForTrie(featuresV.GetCodingParams())); - featuresVector.ForEachOffset(FeatureInserter(names, cp)); + featuresV.ForEachOffset(FeatureInserter(names, cp, featuresV.GetScaleRange())); names.EndAdding(); names.OpenForRead(); |