diff options
author | mpimenov <mpimenov@users.noreply.github.com> | 2016-06-21 16:28:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-21 16:28:04 +0300 |
commit | 008d1120a91df8f6d22f3d21af3799d52c906b95 (patch) | |
tree | a6bf6b5a6ee020e6504b42812afac517c60ee9a8 /generator | |
parent | 40e57d4b44799a756655ccb754ed0ba4f35c36a8 (diff) | |
parent | 0d12ff44368782c058f75d350c0825f55fa9e40e (diff) |
Merge pull request #3617 from ygorshenin/fix-streets-matching-with-postcodes
[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); |