Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Gorshenin <y@maps.me>2016-06-21 10:54:15 +0300
committerYuri Gorshenin <y@maps.me>2016-06-21 16:27:11 +0300
commit0d12ff44368782c058f75d350c0825f55fa9e40e (patch)
tree4546448daaf1a3df9b8adc5abbe68ed2d54a6924 /generator
parent0a8760da49f39a487a7ee961dde3e9abd57a5b82 (diff)
[search] Fixed streets matching by postcodes.
Diffstat (limited to 'generator')
-rw-r--r--generator/generator_tests_support/test_feature.cpp9
-rw-r--r--generator/search_index_builder.cpp17
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);