Поиск заметок по ключевым словам — практический проект на C++ для тех, кто уже знает основы языка. Вы превратите несколько запомнившихся слов в переиспользуемый локальный поиск, который находит все подходящие заметки в разных папках и показывает настоящие места появления этих слов.
Курс состоит из двух пошаговых лабораторных работ и одного самостоятельного задания. Сначала вы свяжете слова с идентификаторами документов в индексе. Затем объедините слова запроса, чтобы найти все содержащие их документы. В завершение примените те же правила к другой коллекции заметок. Каждая работа предоставляет собственные заметки и начальный код, не требуя файлов из предыдущей среды.
Чему вы научитесь
После завершения курса вы сможете:
- определять документы по относительному пути, различая одноимённые файлы в разных папках;
- строить индекс слов и множеств документов с помощью
mapиset, не дублируя документ из-за повторных слов; - применять заданное правило целых слов из букв ASCII без учёта регистра ASCII;
- пересекать множества кандидатов по условию AND и возвращать каждый документ со всеми словами запроса;
- выводить реальные пути, номера строк и исходные совпавшие строки без дублирования строк результата;
- повторным запуском перестраивать индекс по текущим учебным заметкам, сохраняя эталонные оригиналы.
Для кого этот курс
Курс предназначен для изучающих C++, которые хотят применить стандартные контейнеры и чтение файлов для создания полезной программы поиска с понятными и проверяемыми правилами.
Предварительные требования: Базовая навигация в терминале и знакомство со строками, функциями, vector, файловыми потоками и основами исключений в C++. Пошаговые работы знакомят с нужными операциями map и set, идентификацией по относительному пути и пересечением множеств.
Учебная среда: LabEx предоставляет подготовленную среду Linux в браузере с компилятором C++17, начальным кодом, коллекциями заметок и Terminal. Вспомогательный код загрузки файлов, выделения слов и форматирования вывода подготовлен. Команды и сообщения программы — на английском; имена и текст заметок сохраняют предоставленное содержимое.
Часто задаваемые вопросы
Должны ли все слова запроса находиться в одной строке?
Нет. Условие AND применяется ко всему документу. Разные слова могут находиться в разных строках. Результат показывает по одному разу каждую исходную строку с любым словом запроса, чтобы вы могли самостоятельно найти подтверждение.
Понимает ли этот поиск все языки?
Словами считаются только последовательности букв ASCII, причём заглавные буквы ASCII переводятся в строчные; остальные байты разделяют слова. cat и catalog — разные слова. Имена файлов Unicode и исходные строки сохраняются, но общей многоязычной сегментации слов в проекте нет.
Как изменённые заметки попадают в индекс?
Каждый запуск заново читает текущие файлы и строит новый индекс в памяти. После изменения, добавления или удаления разрешённой учебной заметки запустите программу ещё раз. Эталонные оригиналы остаются неизменными; постоянного индекса и фонового обновления нет.

