从搜索到阅读,把入口连起来 https://home.without202.com/journal/search-to-reading-workflows 记录日期:2026-11-06 分类:建站记录 标签:home · Rust · TOML · 站内搜索 · 阅读清单 记录同一章节的关键词定位、公开正文 TXT 下载与工作台最近加入阅读预览,让找到内容、离线保存和稍后继续沿一条路径衔接。 1. 让搜索结果再走一步 站内搜索已经能检索公开日志、项目介绍和代码,但从结果打开全文后,仍可能需要寻找具体章节。0.341.0 在原有全文入口下增加「直达命中章节」,把搜索与正文的位置接起来。 原标题继续进入完整文章,结果数量、相关性顺序和翻页保持原样;本页结果 TOML 仍使用正式的全文地址。这个补充入口是原生链接,关闭脚本或用键盘 Enter 也能使用,不会把搜索框里尚未提交的文字带进目标页。 - 搜索公开日志中的「代码」:https://home.without202.com/search?q=代码&kind=journal - 搜索与章节入口参考:https://home.without202.com/journal/home-entry-points-reference#section-1 2. 只定位确实命中的章节 章节匹配使用已应用的关键词:按空白分词、忽略大小写,在同一章节的标题、正文、代码语言和代码内容中核对全部词。多个章节都符合时,取文档顺序中的第一个。 如果不同词分别出现在不同章节,或只命中文章标题与标签,就不猜测一个位置;没有关键词也不显示章节直达。下面是当前 Rust 搜索模块 matching_section 函数的原文。它只从公开配置中的日志与项目查找章节,不读取草稿或私有正文,也不会改变搜索结果的原始地址。 代码示例 · rust fn matching_section<'a>(c: &'a Config, item: &SearchItem, q: &str) -> Option<(usize, &'a str)> { if q.trim().is_empty() { return None; } let sections = if let Some(slug) = item.href.strip_prefix("/journal/") { &c.journal.iter().find(|entry| entry.slug == slug)?.sections } else if let Some(slug) = item.href.strip_prefix("/projects/") { &c.details .iter() .find(|project| project.slug == slug)? .sections } else { return None; }; let words = q.to_lowercase(); sections.iter().enumerate().find_map(|(index, section)| { let mut hay = format!("{} {}", section.title, section.body); for code in §ion.code { hay.push_str(&format!(" {} {}", code.language, code.content)); } let hay = hay.to_lowercase(); words .split_whitespace() .all(|word| hay.contains(word)) .then_some((index, section.title.as_str())) }) } - 查找本篇的 Rust 实现:https://home.without202.com/search?q=matching_section&kind=journal 3. 把全文留作离线文件 0.340.0 给公开文章底部增加「下载正文 TXT」。文件包含标题、正式地址、日期、分类、标签、摘要、章节正文、完整代码与相关链接;正文和代码保留空行、缩进和字面字符,换行统一为 LF,站内相关链接补成正式地址。 页面中已经折叠的代码仍会完整下载。文件来自当前已发布的服务端内容,页面上临时改写的 DOM、草稿、历史、阅读偏好和章节位置都不会进入文件;未发布或撤回的文章返回普通 404。这个下载与「下载文章 TOML」各自保留,也与阅读清单只含标题和链接的 TXT 区分开。 - 下载一篇公开文章的正文 TXT:https://home.without202.com/journal/writing-with-code/export.txt - 查看 home 项目的完整介绍:https://home.without202.com/projects/home - 回到代码示例的设计记录:https://home.without202.com/journal/writing-with-code 4. 留在工作台的三篇文章 0.342.0 的本机工作台增加「稍后阅读」预览。它从既有收藏资料中,按加入顺序倒序显示最近三篇仍可公开的文章,并保留全部可用篇数;点击标题打开全文,完整清单入口继续提供查找和其他排序方式。 下方是独立编写的收藏 TOML 结构示例,并非实际浏览器资料。导入时沿用文件顺序;工作台的最近加入预览独立于阅读清单的最新发布、最早发布等显示偏好。未知或暂不公开的标识不占三个位置,也不自动删除。 预览不新增存储键,不自动更改收藏;跨标签页修改和页面恢复会刷新显示。当前聚焦文章被移除或挤出前三篇时,焦点转向完整清单入口;没有可用文章时,转向工作台上方的阅读清单入口。没有收藏、关闭脚本或存储不可用时隐藏预览,公开入口仍然可用。 代码示例 · toml # 独立结构示例,不是任何浏览器资料的实际导出。 version = 1 favorites = [ "journal:writing-with-code", "journal:start-with-your-everyday", ] - 打开工作台(先加入稍后阅读才显示预览):https://home.without202.com/desk - 查看完整阅读清单:https://home.without202.com/reading-list - 收藏与迁移说明:https://home.without202.com/journal/home-entry-points-reference#section-7 5. 在恢复副本里核对整条路径 这几次改动沿用 Rust、TOML 与原生链接的基础:搜索给出位置,正文负责阅读和离线下载,本机工作台负责把已经留待稍后的文章带回来。它们分别使用公开配置和已有浏览器资料,不需要把私有文字加入公开索引。 本篇发布前,0.342.0 已通过 384 项 Rust 测试;该版本的恢复检查点把对应程序、源码和应用备份配对,在隔离副本中完成全部 50 组公开检查。专项结果包括正文 TXT 16 项、搜索章节 38 项、工作台 24 项和常用入口折叠 25 项;私有待办的 80 项流程检查只使用独立测试数据。 恢复验证期间,线上 521 个受保护文件的内容、权限和服务进程号保持不变,旧检查点完整保留。这证明了本机应用副本的恢复路径;异机副本和整机恢复仍待安排。本篇作为独立内容更新发布,不表示在发布后又重新运行了一遍全部应用测试。 - 查看 home 的功能与后续方向:https://home.without202.com/projects/home - 查看开发计划:https://home.without202.com/roadmap