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:
authorvng <viktor.govako@gmail.com>2016-03-24 12:54:31 +0300
committervng <viktor.govako@gmail.com>2016-03-24 12:54:31 +0300
commit0505f5580032674f6086ea1ffa79a43d4be7813a (patch)
treee1217d9b0683e08de606c73fafdbac22b26d2f61 /indexer/search_string_utils.cpp
parentc4cd806f652cc52b9a6c15ff20e021b493ba5322 (diff)
Review fixes.
Diffstat (limited to 'indexer/search_string_utils.cpp')
-rw-r--r--indexer/search_string_utils.cpp26
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)