From fe53059f029476f9b8922665a7f0b19c8d2dcff7 Mon Sep 17 00:00:00 2001 From: Yury Melnichek Date: Thu, 20 Oct 2011 13:27:14 +0200 Subject: [PATCH] [search] Index features' types as almost normal tokens, for example: "!type:4547". --- data/minsk-pass.mwm | Bin 32905 -> 34215 bytes indexer/search_index_builder.cpp | 20 ++++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/data/minsk-pass.mwm b/data/minsk-pass.mwm index c8b77ad7d7e56d54dac0594f3daaa6d6a583d834..139ffeb3b0dca6e6f68c06b9d7ac8c379f7dd3cc 100644 GIT binary patch delta 10304 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 delta 9171 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 & m_names; uint32_t m_pos; uint8_t m_rank; + FeatureNameInserter(vector & names, uint32_t pos, uint8_t rank) : m_names(names), m_pos(pos), m_rank(rank) {} - bool operator()(signed char, string const & name) const + + void AddToken(signed char, strings::UniString const & s) const + { + m_names.push_back(FeatureName(s, m_pos, m_rank)); + } + + bool operator()(signed char lang, string const & name) const { // m_names.push_back(FeatureName(, m_pos, m_rank)); strings::UniString uniName = search::NormalizeAndSimplifyString(name); @@ -82,7 +89,7 @@ struct FeatureNameInserter tokens.resize(30); } for (size_t i = 0; i < tokens.size(); ++i) - m_names.push_back(FeatureName(tokens[i], m_pos, m_rank)); + AddToken(lang, tokens[i]); return true; } }; @@ -90,11 +97,20 @@ struct FeatureNameInserter struct FeatureInserter { vector & m_names; + explicit FeatureInserter(vector & names) : m_names(names) {} + void operator() (FeatureType const & feature, uint64_t pos) const { + // Add names of the feature. FeatureNameInserter f(m_names, static_cast(pos), feature::GetSearchRank(feature)); feature.ForEachNameRef(f); + + // Add names of categories of the feature. + FeatureType::GetTypesFn getTypesFn; + feature.ForEachTypeRef(getTypesFn); + for (size_t i = 0; i < getTypesFn.m_size; ++i) + f.AddToken(0, search::FeatureTypeToString(getTypesFn.m_types[i])); } };