按关键词查找笔记 是一门面向已有语言基础的学习者的 C++ 项目课程。你将把记得的几个词变成可复用的本地搜索工具,找出不同文件夹中的全部匹配笔记,并显示这些词实际出现的位置。
课程包含 2 个引导实验和 1 个独立挑战。你先在索引中建立词与文档身份的关系,再组合查询词,找出包含全部词的所有文档,最后把相同规则应用到另一组笔记。每个实验都独立提供笔记和起始代码,不依赖上一环境中的文件。
你将学到什么
完成本课程后,你将能够:
- 使用相对路径标识文档,让不同文件夹中的同名文件保持独立;
- 用
map和set建立词到文档集合的索引,不因词重复出现而重复登记文档; - 应用基于 ASCII 字母的完整词规则,并忽略 ASCII 字母大小写;
- 对候选集合进行 AND 组合,返回包含全部查询词的每份文档;
- 输出真实路径、行号和原始匹配行,不重复显示同一行;
- 重新运行程序,根据当前练习笔记重建索引,同时保留参考原件。
本课程适合谁
本课程适合希望使用标准容器和文件输入,制作规则清楚、可验证的实用搜索程序的 C++ 学习者。
前置要求: 掌握基本终端导航,熟悉 C++ 字符串、函数、vector、文件流和基本异常。引导实验会介绍所需的 map、set 操作、相对路径身份和集合交集。
学习环境: LabEx 提供浏览器中的预配置 Linux 环境,包含 C++17 编译器、起始代码、笔记集合和 Terminal。文件加载、分词和输出格式化的辅助代码已准备好。命令和程序消息使用英文;笔记文件名和文本保留提供的原始内容。
常见问题
全部查询词必须出现在同一行吗?
不需要。AND 条件作用于整份文档,不同词可以出现在不同行。结果会将包含任意查询词的每个原始行显示一次,便于你自行定位证据。
搜索支持所有语言吗?
词的规则仅限连续 ASCII 字母,并只将 ASCII 大写转为小写;其他字节作为分隔符。cat 和 catalog 是不同的词。Unicode 文件名和原始行文本会保留,但项目不提供通用多语言分词。
修改后的笔记如何进入索引?
每次调用程序都会重新读取当前文件,建立新的内存索引。编辑、新增或删除获准的练习笔记后,重新运行即可。参考原件保持不变;没有持久索引或后台刷新服务。

