[search] Fixed retrieval on Mwms without categories section.

This commit is contained in:
Yuri Gorshenin 2015-10-21 15:38:51 +03:00 committed by Sergey Yershov
parent cc63232691
commit 60cf672e88

View file

@ -260,6 +260,7 @@ public:
template <class ToDo>
void ForEachValue(size_t index, ToDo && toDo) const
{
ASSERT_LESS(index, m_holder.size(), ());
for (auto const & value : m_holder[index])
toDo(value);
}
@ -385,10 +386,7 @@ void MatchFeaturesInTrie(SearchQueryParams const & params, trie::DefaultIterator
TFilter const & filter, ToDo && toDo)
{
TrieValuesHolder<TFilter> categoriesHolder(filter);
if (!MatchCategoriesInTrie(params, trieRoot, categoriesHolder)) {
LOG(LERROR, ("Can't find categories."));
return;
}
bool const categoriesMatched = MatchCategoriesInTrie(params, trieRoot, categoriesHolder);
impl::OffsetIntersecter<TFilter> intersecter(filter);
for (size_t i = 0; i < params.m_tokens.size(); ++i)
@ -397,7 +395,8 @@ void MatchFeaturesInTrie(SearchQueryParams const & params, trie::DefaultIterator
{
MatchTokenInTrie(params.m_tokens[i], langRoot, intersecter);
});
categoriesHolder.ForEachValue(i, intersecter);
if (categoriesMatched)
categoriesHolder.ForEachValue(i, intersecter);
intersecter.NextStep();
}
@ -407,7 +406,8 @@ void MatchFeaturesInTrie(SearchQueryParams const & params, trie::DefaultIterator
{
MatchTokenPrefixInTrie(params.m_prefixTokens, langRoot, intersecter);
});
categoriesHolder.ForEachValue(params.m_tokens.size(), intersecter);
if (categoriesMatched)
categoriesHolder.ForEachValue(params.m_tokens.size(), intersecter);
intersecter.NextStep();
}