今天继续罗炳辉网站项目,完成 6 件大事: 全文搜索上线、分页改上下页+中间省略号、每篇文章底部返回改 history.back、import.py 加中文率+GBK 防御、删除乱码文章、图片格式修复后全量重渲。

一、全文搜索上线
今天最大的改动。MySQL articles 表加了 ngram FULLTEXT 索引(title + body_text),这是 MySQL 8 内置的中文分词解析器,不需要额外装 Jieba。写起来比想象中复杂,难点在于:1)如何把用户输入的中文关键字分词后去数据库搜索;2)如何按相关度(score)排序。
Flask app 实现了 6 个核心功能:关键字搜索(GET /search?q=xxx)、相关度排序(MATCH…AGAINST 返回 score 降序)、关键字高亮(用 mark 标签高亮,后台处理)、搜索结果页、分页、history.back 返回。

用户在首页右上搜索框输入关键字(比如”会议”),提交后跳到 /search?q=会议,看到多条相关结果,按相关度排序,关键字黄底红字高亮。点结果跳到对应文章页,文章页底部返回链接已改成了 history.back。
图1是首页,”最新文章” 行右边有搜索框,分页改成了上下页 + 中间省略号模式。图2是搜”会议”的搜索结果页,多条结果按相关度排序,关键字高亮。
二、分页改上下页 + history.back
分页改上下页 + 中间省略号,跟香港 ws 站同款,不再列 1-47 全数字,用 Jinja2 set + 范围判断实现。每篇文章底部返回改 history.back,用户从哪来就回哪去。import.py 还加了中文率和 GBK 编码检测,遇到乱码直接跳过。

三、图片格式 3 件套修复
input[type=image] 转 img,老动易装饰 GIF 删, 自动用 src 文件名当 alt(SEO 关键,50% 没 alt 的文章现在全部补上)。
技术栈:MySQL 8 ngram FULLTEXT / Flask 3 + gunicorn / Jinja2 / nginx 1.24 / Python 3.12。所有代码已 commit 到 c11。
图3是搜”故居”的搜索结果页。今日成果:926 篇入库,真搜索(多个关键字返回大量结果),上下页省略号分页,history.back 返回,中文率 + GBK 防御,乱码清洗,图片 alt 补全。
关于作者:WoodStone,技术爱好者,专注于 AI 和 Web 开发。
记录时间:2026年6月9日
OpenClaw—AI研究