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:
authorAnatoly Serdtcev <serdtcev@maps.me>2019-03-07 15:28:47 +0300
committerAnatoly Serdtcev <serdtcev@maps.me>2019-03-11 12:25:39 +0300
commit70ecaf1e1eaf53baf9da3102304a2347fc937a87 (patch)
treeb54b2fc0324d5a13af4667323628f932d9132201 /geocoder
parent8fdaabf36155e4631a25feb330798229dda8bc77 (diff)
[geocoder] Optimize CPU: no index street synonym only
Diffstat (limited to 'geocoder')
-rw-r--r--geocoder/index.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/geocoder/index.cpp b/geocoder/index.cpp
index 21b30be043..cdd4ff2b70 100644
--- a/geocoder/index.cpp
+++ b/geocoder/index.cpp
@@ -83,11 +83,25 @@ void Index::AddStreet(DocId const & docId, Index::Doc const & doc)
{
CHECK_EQUAL(doc.m_type, Type::Street, ());
size_t const t = static_cast<size_t>(doc.m_type);
+
+ auto isStreetSuffix = [] (std::string const & s) {
+ return search::IsStreetSynonym(strings::MakeUniString(s));
+ };
+
+ if (all_of(begin(doc.m_address[t]), end(doc.m_address[t]), isStreetSuffix))
+ {
+ LOG(LDEBUG, ("Undefined proper name in tokens ", doc.m_address[t], "of street entry",
+ doc.m_osmId, "(", doc.m_address, ")"));
+ if (doc.m_address[t].size() > 1)
+ m_docIdsByTokens[MakeIndexKey(doc.m_address[t])].emplace_back(docId);
+ return;
+ }
+
m_docIdsByTokens[MakeIndexKey(doc.m_address[t])].emplace_back(docId);
for (size_t i = 0; i < doc.m_address[t].size(); ++i)
{
- if (!search::IsStreetSynonym(strings::MakeUniString(doc.m_address[t][i])))
+ if (!isStreetSuffix(doc.m_address[t][i]))
continue;
auto addr = doc.m_address[t];
addr.erase(addr.begin() + i);