Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tuple<vector<string>, DocumentStatus> SearchServer::MatchDocument(
- const std::execution::parallel_policy& policy,
- const string &raw_query,
- int document_id
- ) const
- {
- const auto query = ParseQuery(raw_query);
- vector<string> matched_words(query.plus_words.size());
- vector<const string*> minus_words(query.minus_words.size());
- std::transform(
- policy,
- query.minus_words.begin(),
- query.minus_words.end(),
- minus_words.begin(),
- [](const string &word){return &word;}
- );
- if(
- any_of(
- policy, minus_words.begin(), minus_words.end(),
- [&](auto& word){
- //std::cout << word << endl;
- return word_to_document_freqs_.at(*word).count(document_id);
- }
- )
- )
- {
- //cout << "!"<<endl;
- return {vector<string>{}, documents_.at(document_id).status};
- }
- vector<string> plus_words(
- query.plus_words.begin(),query.plus_words.end()
- );
- {
- auto it_end = copy_if(
- policy,
- plus_words.begin(),
- plus_words.end(),
- matched_words.begin(),
- [&](string& word){
- return word_to_document_freqs_.at(word).count(document_id);
- }
- );
- matched_words.erase(it_end, matched_words.end());
- }
- sort(policy, matched_words.begin(),matched_words.end());
- {
- auto it_end = unique(
- policy,
- matched_words.begin(),
- matched_words.end()
- );
- matched_words.erase(it_end, matched_words.end());
- }
- return {matched_words, documents_.at(document_id).status};
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement