diff options
author | vng <viktor.govako@gmail.com> | 2016-03-24 12:54:31 +0300 |
---|---|---|
committer | vng <viktor.govako@gmail.com> | 2016-03-24 12:54:31 +0300 |
commit | 0505f5580032674f6086ea1ffa79a43d4be7813a (patch) | |
tree | e1217d9b0683e08de606c73fafdbac22b26d2f61 /indexer/search_string_utils.cpp | |
parent | c4cd806f652cc52b9a6c15ff20e021b493ba5322 (diff) |
Review fixes.
Diffstat (limited to 'indexer/search_string_utils.cpp')
-rw-r--r-- | indexer/search_string_utils.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/indexer/search_string_utils.cpp b/indexer/search_string_utils.cpp index 25f2488a72..24aaaa3764 100644 --- a/indexer/search_string_utils.cpp +++ b/indexer/search_string_utils.cpp @@ -6,9 +6,10 @@ #include "std/algorithm.hpp" #include "std/transform_iterator.hpp" +using namespace strings; + namespace search { -using namespace strings; UniString NormalizeAndSimplifyString(string const & s) { @@ -83,8 +84,6 @@ UniString NormalizeAndSimplifyString(string const & s) */ } -char const * STREET_TOKENS_SEPARATOR = "\t -,."; - UniString FeatureTypeToString(uint32_t type) { string const s = "!type:" + to_string(type); @@ -93,6 +92,10 @@ UniString FeatureTypeToString(uint32_t type) namespace { +char const * kStreetTokensSeparator = "\t -,."; + +/// @todo Move prefixes, suffixes into separate file (autogenerated). +/// It's better to distinguish synonyms comparison according to language/region. class StreetsSynonymsHolder { @@ -100,9 +103,6 @@ class StreetsSynonymsHolder public: StreetsSynonymsHolder() { - /// @todo Move prefixes, suffixes into separate file (autogenerated). - /// "Набережная" улица встречается в городах - char const * affics[] = { // Russian @@ -180,9 +180,9 @@ public: return (it != m_synonyms.end() && StartsWith(*it, prefix)); } - bool MatchEqual(UniString const & prefix) const + bool FullMatch(UniString const & name) const { - return binary_search(m_synonyms.begin(), m_synonyms.end(), prefix); + return binary_search(m_synonyms.begin(), m_synonyms.end(), name); } }; @@ -193,21 +193,23 @@ StreetsSynonymsHolder g_streets; UniString GetStreetNameAsKey(string const & name) { UniString res; - SimpleTokenizer iter(name, STREET_TOKENS_SEPARATOR); + SimpleTokenizer iter(name, kStreetTokensSeparator); while (iter) { UniString const s = NormalizeAndSimplifyString(*iter); ++iter; - if (!g_streets.MatchEqual(s)) + if (!g_streets.FullMatch(s)) res.append(s); } - return res; + + // In case when street name has only synonym tokens, but we should return valid key. + return (res.empty() ? NormalizeAndSimplifyString(name) : res); } bool IsStreetSynonym(UniString const & s) { - return g_streets.MatchEqual(s); + return g_streets.FullMatch(s); } bool IsStreetSynonymPrefix(UniString const & s) |