Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SearchServer::Query SearchServer::ParseQuery(const string_view text, bool sequenced_policy) const {
- Query query;
- for (const string_view word : SplitIntoWords(text)) {
- if (!IsValidWord(word)) {
- throw invalid_argument("Некорректный поисковый запрос.");
- }
- if (word == "-"s) {
- throw invalid_argument("После знака \"-\" отсутствует слово.");
- }
- QueryWord query_word = ParseQueryWord(word);
- if (!query_word.is_stop) {
- if (query_word.is_minus) {
- query.minus_words.push_back(query_word.data);
- } else {
- query.plus_words.push_back(query_word.data);
- }
- }
- }
- if (sequenced_policy) {
- sort(query.plus_words.begin(), query.plus_words.end());
- query.plus_words.erase(unique(query.plus_words.begin(), query.plus_words.end()), query.plus_words.end());
- sort(query.minus_words.begin(), query.minus_words.end());
- query.minus_words.erase(unique(query.minus_words.begin(), query.minus_words.end()), query.minus_words.end());
- }
- return query;
- }
Advertisement
Add Comment
Please, Sign In to add comment