diff options
author | Yuri Gorshenin <y@maps.me> | 2016-06-21 10:54:15 +0300 |
---|---|---|
committer | Yuri Gorshenin <y@maps.me> | 2016-06-21 16:27:11 +0300 |
commit | 0d12ff44368782c058f75d350c0825f55fa9e40e (patch) | |
tree | 4546448daaf1a3df9b8adc5abbe68ed2d54a6924 /generator | |
parent | 0a8760da49f39a487a7ee961dde3e9abd57a5b82 (diff) |
[search] Fixed streets matching by postcodes.
Diffstat (limited to 'generator')
-rw-r--r-- | generator/generator_tests_support/test_feature.cpp | 9 | ||||
-rw-r--r-- | generator/search_index_builder.cpp | 17 |
2 files changed, 13 insertions, 13 deletions
diff --git a/generator/generator_tests_support/test_feature.cpp b/generator/generator_tests_support/test_feature.cpp index 8212e15806..ea8f24329f 100644 --- a/generator/generator_tests_support/test_feature.cpp +++ b/generator/generator_tests_support/test_feature.cpp @@ -53,7 +53,11 @@ void TestFeature::Serialize(FeatureBuilder1 & fb) const if (m_hasCenter) fb.SetCenter(m_center); if (!m_name.empty()) + { CHECK(fb.AddName(m_lang, m_name), ("Can't set feature name:", m_name, "(", m_lang, ")")); + if (m_lang != "default") + CHECK(fb.AddName("default", m_name), ("Can't set feature name:", m_name, "( default )")); + } if (!m_postcode.empty()) fb.AddPostcode(m_postcode); } @@ -134,10 +138,7 @@ TestStreet::TestStreet(vector<m2::PointD> const & points, string const & name, s void TestStreet::Serialize(FeatureBuilder1 & fb) const { - fb.SetTestId(m_id); - CHECK(fb.AddName(m_lang, m_name), ("Can't set feature name:", m_name, "(", m_lang, ")")); - if (m_lang != "default") - CHECK(fb.AddName("default", m_name), ("Can't set feature name:", m_name, "( default )")); + TestFeature::Serialize(fb); auto const & classificator = classif(); fb.SetType(classificator.GetTypeByPath({"highway", "living_street"})); diff --git a/generator/search_index_builder.cpp b/generator/search_index_builder.cpp index d94930010e..531ee4f28e 100644 --- a/generator/search_index_builder.cpp +++ b/generator/search_index_builder.cpp @@ -151,7 +151,6 @@ struct FeatureNameInserter m_keyValuePairs.emplace_back(key, m_val); } -public: bool operator()(signed char lang, string const & name) const { strings::UniString const uniName = search::NormalizeAndSimplifyString(name); @@ -254,16 +253,12 @@ public: { using namespace search; - feature::TypesHolder types(f); - static TypesSkipper skipIndex; - skipIndex.SkipTypes(types); - if (types.Empty()) - return; + feature::TypesHolder types(f); auto const & streetChecker = ftypes::IsStreetChecker::Instance(); - bool hasStreetType = streetChecker(types); + bool const hasStreetType = streetChecker(types); // Init inserter with serialized value. // Insert synonyms only for countries and states (maybe will add cities in future). @@ -274,8 +269,8 @@ public: string const postcode = f.GetMetadata().Get(feature::Metadata::FMD_POSTCODE); if (!postcode.empty()) { - // See OSM TagInfo or Wiki about modern postcodes format. The average number of tokens is less - // than two. + // See OSM TagInfo or Wiki about modern postcodes format. The + // mean number of tokens is less than two. buffer_vector<strings::UniString, 2> tokens; SplitUniString(NormalizeAndSimplifyString(postcode), MakeBackInsertFunctor(tokens), Delimiters()); @@ -283,6 +278,10 @@ public: inserter.AddToken(kPostcodesLang, token); } + skipIndex.SkipTypes(types); + if (types.Empty()) + return; + // Skip types for features without names. if (!f.ForEachName(inserter)) skipIndex.SkipEmptyNameTypes(types); |