背景与用途

我的知识库笔记越攒越多,靠翻文件夹找内容越来越慢,于是自己写了一个本地全文检索小脚本:输入关键词,它在本地笔记目录里找出所有包含该关键词的文件和行号。脚本只读取我本人电脑上的本地文件,不联网,仅供我自己使用。这篇笔记记录它第一轮功能自测的过程。

测试目标

  • 验证关键词检索的准确性和大小写处理是否符合预期;
  • 验证无结果、多关键词等边界场景的表现;
  • 记录发现的问题,修复后回归验证。

测试记录

编号 测试项 操作步骤 预期结果 实际结果 状态
T01 精确关键词匹配 检索「提示词」 列出全部包含该词的笔记与行号 与预期一致 通过
T02 英文大小写 检索「Agent」 大小写不敏感,agent、AGENT 均能命中 仅全小写写法能命中 不通过(已修复)
T03 无结果提示 检索一个不存在的词 给出「未找到相关内容」的友好提示 程序直接退出,无任何提示 不通过(已修复)
T04 多关键词检索 输入「记账 汇总」两个词 返回同时包含两个词的笔记 与预期一致 通过
T05 结果排序 观察结果列表顺序 按笔记修改时间由近到远排序 与预期一致 通过

核心代码片段

修复 T02 之后的检索核心逻辑如下,改动点是把关键词和文本统一转成小写再比较:

def search(keyword: str, folder: str = "./notes"):
    """在本地笔记目录中检索关键词,返回命中文件与行号。"""
    hits = []
    needle = keyword.lower()
    for path in Path(folder).rglob("*.md"):
        for lineno, line in enumerate(path.open(encoding="utf-8"), 1):
            if needle in line.lower():
                hits.append((path, lineno, line.strip()))
    if not hits:
        print("未找到相关内容,请换个关键词试试。")
    return hits

问题与修复

  1. 问题一(T02,已修复):原实现直接区分大小写比较,英文关键词经常漏命中。修复为统一转小写后比较,用「Agent / agent / AGENT」三组词回归测试,命中数量一致;
  2. 问题二(T03,已修复):无命中时静默退出,容易误以为程序出错。修复为输出明确提示,回归测试通过。

下一步自测计划

  • 笔记数量增多后测试检索速度,必要时增加索引缓存;
  • 测试中文长句检索的命中效果;
  • 验证检索结果导出为清单文件的功能。