<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>I-notes 博客</title>
        <link>https://blog.ixsay.com/</link>
        <description>vitepress,blog,blog-theme</description>
        <lastBuildDate>Sun, 30 Aug 2026 14:09:11 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-CN</language>
        <image>
            <title>I-notes 博客</title>
            <url>https://blog.ixsay.com/favicon.ico</url>
            <link>https://blog.ixsay.com/</link>
        </image>
        <copyright>Copyright © 2026 I-notes 博客</copyright>
        <item>
            <title><![CDATA[项目开发进度日志]]></title>
            <link>https://blog.ixsay.com/posts/progress.html</link>
            <guid isPermaLink="false">https://blog.ixsay.com/posts/progress.html</guid>
            <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[这是一个被删除的示例]]></description>
            <content:encoded><![CDATA[<h1 id="项目开发进度日志-progress-md" tabindex="-1">项目开发进度日志 (progress.md) <a class="header-anchor" href="#项目开发进度日志-progress-md" aria-label="Permalink to &quot;项目开发进度日志 (progress.md)&quot;">&ZeroWidthSpace;</a></h1>
<h2 id="已完成" tabindex="-1">已完成 <a class="header-anchor" href="#已完成" aria-label="Permalink to &quot;已完成&quot;">&ZeroWidthSpace;</a></h2>
<ul>
<li>[x] <strong>排查中文搜不出结果的根本原因</strong>：之前使用连续中文匹配正则 <code>[\u4e00-\u9fa5]+</code> 将整句话作为单一 token 存入索引，导致非句首关键词无法通过前缀匹配检索到。</li>
<li>[x] <strong>实现现代化混合多粒度中文分词器（Intl.Segmenter + 连续词组 + 单字索引）</strong>：
<ol>
<li>调用现代 JS 原生 <code>Intl.Segmenter</code> 提取自然中文词汇（如“系统”、“架构”、“设计”、“干净”）；</li>
<li>结合英文单词正则提取与 2~10 字连续词组提取；</li>
<li>补充单汉字索引，保证无论搜单字、复合词还是专业术语都能 100% 准确命中；</li>
<li>配合 Mark.js 长词优先匹配机制，确保高亮时连续整词标黄，绝不产生零散破碎色块。</li>
</ol>
</li>
<li>[x] <strong>解决多级标题每次被当作独立文章重复出现的问题</strong>：
<ul>
<li>文章建立唯一的顶级主条目（<code>boost.title = 8</code>）；</li>
<li>降低子小节 <code>titles</code> 权重（<code>0.1</code>），搜标题时仅出现文章主卡片。</li>
</ul>
</li>
<li>[x] <strong>正文文本摘要提取机制验证与排查</strong>：
<ul>
<li>明确 VitePress 原生内置 <code>detailedView: true</code>（正文摘要模式 / Excerpt）；</li>
<li>阐明分章节锚点（Anchor）提取、Mark.js 自动聚焦命中词段落并高亮展示的技术底层；</li>
<li>优化 CSS 摘要容器 <code>.excerpt-wrapper</code>、<code>.excerpt</code> 与暗黑模式支持。</li>
</ul>
</li>
<li>[x] <strong>构建验证</strong>：执行 <code>npm run build</code>，成功编译通过（3.34s），验证索引与正文摘要逻辑正常运行。</li>
</ul>
<hr>
<h2 id="架构字典" tabindex="-1">架构字典 <a class="header-anchor" href="#架构字典" aria-label="Permalink to &quot;架构字典&quot;">&ZeroWidthSpace;</a></h2>
<table tabindex="0">
<thead>
<tr>
<th style="text-align:left">文件路径</th>
<th style="text-align:left">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">[.vitepress/config.ts](file:///D:/Users/A/Desktop/VitepressBlog/.vitepress/config.ts)</td>
<td style="text-align:left">VitePress 核心配置文件，包含主题、导航、MiniSearch 本地搜索（混合多粒度中文分词器、分段策略、搜索权重 Boost、<code>detailedView</code> 正文摘要视图）等配置</td>
</tr>
<tr>
<td style="text-align:left">[.vitepress/theme/custom.css](file:///D:/Users/A/Desktop/VitepressBlog/.vitepress/theme/custom.css)</td>
<td style="text-align:left">主题全局与组件样式表，包含全新的现代精致搜索弹窗样式（<code>.VPLocalSearchBox</code>、<code>.excerpt</code> 正文摘要渐变定位与 <code>mark</code> 关键词高亮）、暗色模式适配及全局重置</td>
</tr>
<tr>
<td style="text-align:left">[.vitepress/theme/serverUtils.ts](file:///D:/Users/A/Desktop/VitepressBlog/.vitepress/theme/serverUtils.ts)</td>
<td style="text-align:left">服务端工具方法，用于读取所有文章元数据、排序并生成分页 Markdown 文件</td>
</tr>
<tr>
<td style="text-align:left">[.vitepress/theme/date.ts](file:///D:/Users/A/Desktop/VitepressBlog/.vitepress/theme/date.ts)</td>
<td style="text-align:left">日期解析与格式化工具函数</td>
</tr>
<tr>
<td style="text-align:left">[.vitepress/theme/functions.ts](file:///D:/Users/A/Desktop/VitepressBlog/.vitepress/theme/functions.ts)</td>
<td style="text-align:left">页面初始化与通用函数</td>
</tr>
<tr>
<td style="text-align:left">[.vitepress/theme/pagination.ts](file:///D:/Users/A/Desktop/VitepressBlog/.vitepress/theme/pagination.ts)</td>
<td style="text-align:left">分页数据处理函数</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="函数字典目录" tabindex="-1">函数字典目录 <a class="header-anchor" href="#函数字典目录" aria-label="Permalink to &quot;函数字典目录&quot;">&ZeroWidthSpace;</a></h2>
<h3 id="vitepress-config-ts" tabindex="-1"><code>.vitepress/config.ts</code> <a class="header-anchor" href="#vitepress-config-ts" aria-label="Permalink to &quot;`.vitepress/config.ts`&quot;">&ZeroWidthSpace;</a></h3>
<ul>
<li><strong><code>_splitIntoSections(file: string, html: string)</code></strong>：自定义 MiniSearch 页面分段函数。为每篇文章生成 1 个高权重的主文档条目（代表文章整体），并仅对包含实质正文且 anchor 唯一的子小节生成精准跳转索引，同时为每个小节挂载实质 text 供正文检索和摘要提取。</li>
<li><strong><code>tokenize(str: string)</code></strong>：现代化混合多粒度中文分词函数，基于 <code>Intl.Segmenter</code> 自然语义词组 + 连续词块 + 单字覆盖，确保任意中文词汇精准检索与整词连续高亮。</li>
</ul>
<h3 id="vitepress-theme-serverutils-ts" tabindex="-1"><code>.vitepress/theme/serverUtils.ts</code> <a class="header-anchor" href="#vitepress-theme-serverutils-ts" aria-label="Permalink to &quot;`.vitepress/theme/serverUtils.ts`&quot;">&ZeroWidthSpace;</a></h3>
<ul>
<li><strong><code>getPosts(pageSize: number)</code></strong>：扫描 <code>posts/</code> 目录下全部 md 文件，提取 frontmatter 元数据并按日期/权重排序，触发分页生成。</li>
<li><strong><code>generatePaginationPages(total: number, pageSize: number)</code></strong>：生成 <code>page_*.md</code> 分页文件及首页 <code>index.md</code>，并在 frontmatter 中标注 <code>search: false</code>。</li>
<li><strong><code>_compareDate(obj1, obj2)</code></strong>：文章排序比较器，优先对比 order，次之对比发布日期。</li>
<li><strong><code>_convertOrder(input)</code></strong>：安全转换文章权重 order 为数字。</li>
</ul>
<h3 id="vitepress-theme-date-ts" tabindex="-1"><code>.vitepress/theme/date.ts</code> <a class="header-anchor" href="#vitepress-theme-date-ts" aria-label="Permalink to &quot;`.vitepress/theme/date.ts`&quot;">&ZeroWidthSpace;</a></h3>
<ul>
<li><strong><code>convertDateV2(date)</code></strong>：将各种格式的日期解析并格式化为标准时间戳或字符串。</li>
</ul>
<hr>
<h2 id="错误-交互日志" tabindex="-1">错误/交互日志 <a class="header-anchor" href="#错误-交互日志" aria-label="Permalink to &quot;错误/交互日志&quot;">&ZeroWidthSpace;</a></h2>
<table tabindex="0">
<thead>
<tr>
<th style="text-align:left">阶段 / 命令</th>
<th style="text-align:left">发现问题 / 控制台信息</th>
<th style="text-align:left">解决方案</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">中文搜索失效</td>
<td style="text-align:left"><code>[\u4e00-\u9fa5]+</code> 把一整句中文当成一个 Token，导致非句首词汇无法被 MiniSearch 前缀匹配命中。</td>
<td style="text-align:left">引入原生 <code>Intl.Segmenter</code> + 词组 + 单字多粒度混合分词，确保所有词汇与单字均可被检索。</td>
</tr>
<tr>
<td style="text-align:left">标题冗余排查</td>
<td style="text-align:left">搜索标题关键词时，因为所有子小节的 <code>titles</code> 都继承了主标题，导致一篇文章的全部子标题都作为独立结果涌入列表。</td>
<td style="text-align:left">将文章主条目设为高权重，降低子小节 <code>titles</code> 权重（0.1），搜标题时仅出现文章主卡片。</td>
</tr>
<tr>
<td style="text-align:left">MiniSearch ID 重复</td>
<td style="text-align:left">构建时报错 <code>duplicate ID /pages/about.html#about-me</code>。</td>
<td style="text-align:left">文章主条目使用空 anchor（代表文件本身），各子小节使用唯一 anchor 并进行 <code>seenAnchors</code> 集合去重。</td>
</tr>
<tr>
<td style="text-align:left">构建验证 <code>npm run build</code></td>
<td style="text-align:left">构建通过，耗时约 3.34s，索引与正文摘要逻辑正常运行。</td>
<td style="text-align:left">验证通过。</td>
</tr>
</tbody>
</table>
<hr>
<h2 id="关联映射" tabindex="-1">关联映射 <a class="header-anchor" href="#关联映射" aria-label="Permalink to &quot;关联映射&quot;">&ZeroWidthSpace;</a></h2>
<ul>
<li><code>中文搜索失效 -&gt; config.ts 升级为 Intl.Segmenter + 混合多粒度分词器</code></li>
<li><code>中文整词高亮 -&gt; 词组长词优先匹配 -&gt; Mark.js 连贯标黄不破碎</code></li>
<li><code>多级标题去重 -&gt; 结构化分层 + boost 权重精调 (title:8, text:4, titles:0.1)</code></li>
<li><code>正文匹配摘要提取 -&gt; config.ts 配置 detailedView: true + custom.css 优化 .excerpt 样式与自动定位</code></li>
</ul>
]]></content:encoded>
            <author>I-notes 博客</author>
            <category>sample</category>
        </item>
    </channel>
</rss>