VP导航 VP导航
首页 提交网址

资讯文章 资讯 · NEWS

搜索结果里那段摘要怎么来的:目录站的片段生成和关键词高亮

2026-10-24 约 1,803 字 预计阅读 5 分钟 yiyunkj

搜索结果里那段摘要怎么来的:目录站的片段生成和关键词高亮 搜

站内搜索的结果列表,用户扫的就是两样东西:标题和下面那段摘要。摘要做好了,用户一眼能判断要不要点;做不好,整页看起来像一堆重复内容。

目录站的条目简介通常不长,而且相当一部分是模板生成的,直接截前 80 个字会得到一批高度相似的结果。这是最常见的源头问题。

搜索结果摘要片段生成与关键词高亮的处理流程

图片来源:网络,版权归原作者所有,侵权请联系删除

三种截取策略

策略做法适合问题
固定前 N 字从开头截简介质量高且各异模板简介会整页雷同
以查询词为中心找到词的位置,前后各取一段简介较长词没命中时要有兜底
字段拼接分类 + 标签 + 特点拼一句结构化字段丰富的条目需要维护拼接模板

实际用得最多的是「以查询词为中心,取不到就退到固定前 N 字」的组合。

截取时要注意别切在半句话中间。做法是截完之后回退到最近的句末标点,找不到标点再按字数硬截。中文里句号、问号、感叹号、分号都算断句点,另外要处理英文句点后面跟空格的情况,不然会把域名和小数点当成句子结束。

高亮的两个安全问题

必须先转义再插入标签

这是最容易出事的地方。原始文本来自条目简介,其中可能包含 HTML;查询词来自用户输入,可能包含任何字符。如果先把高亮标签插进去再转义,标签本身会被转义掉,高亮失效;如果不转义直接输出,就是存储型 XSS 的入口。

正确顺序是:先对原文做 HTML 转义,再在转义后的文本上做高亮替换。这样查询词里的尖括号也已经被转义,插进去的标签是唯一的可信 HTML。

import re, html

def highlight(text, query):
    safe = html.escape(text)                 # 第一步:转义原文
    q = html.escape(query)                   # 查询词同样要转义
    if not q:
        return safe
    pat = re.compile(re.escape(q), re.I)
    return pat.sub(lambda m: f"<mark>{m.group(0)}</mark>", safe)

多词查询要拆开处理

用户输入「设计 素材」这类多词查询,逐个词替换要小心顺序——先替换短词会破坏长词的匹配。做法是按词长降序处理,或者一次性构造包含所有词的正则。

另外,如果站点做了分词和同义词扩展,高亮应该基于「实际参与匹配的词形」,而不是用户原始输入。搜「网站设计」通过同义词命中了「网页设计」,高亮「网站」和「设计」会让用户困惑,不如高亮实际命中的那个词。

别用 innerHTML 拼

前端拿到数据后高亮,常见的写法是拼字符串塞进 innerHTML,这条路同样有 XSS 风险。更稳的做法是后端返回已经处理好、且转义过的片段,前端直接渲染;或者前端用 DOM API 构造文本节点和 mark 元素,不碰 innerHTML。

mark 元素本身语义是对的,屏幕阅读器能识别。如果担心样式,用 CSS 控制,别用 span 加内联样式凑。

它和 meta description 是两回事

经常有人把这两个混起来。区别很明确。

  • meta description:给搜索引擎看的,写在页面 head 里,一个页面只有一份,内容是稳定的。
  • 搜索结果摘要:给自己站内搜索结果页看的,同一条条目在不同查询词下摘要可以不同,是动态生成的。

两者都不直接影响排名,但作用路径不同:前者影响搜索结果里的点击率,后者影响站内搜索的转化。

还有第三个容易混的:搜索引擎结果里的摘要。那段文字由搜索引擎自己从页面内容里挑,不完全听 meta description。有 nosnippet、max-snippet、data-nosnippet 这几个手段可以控制,但那是另一套机制。

零结果和弱结果的摘要

搜索没有结果时,摘要这块就没得做了,重点是兜底内容:推荐相近分类、给出拼写建议、说明为什么没找到。这部分用户的耐心只有几秒。

更要留意的是「弱结果」——技术上返回结果了,但每条摘要都是同一句模板话。这种情况用户的感受比零结果更差,因为看起来像系统在敷衍。判断标准是:把查询词盖住,看这一页的摘要还有没有区别。没区别就说明简介数据源有问题,得回去改简介生成逻辑,不是在摘要这层能修好的。

几条实操建议

摘要长度控制在 80 到 120 字,移动端一行放不下就两行,别超过三行。太长会挤掉结果条数。

高亮次数限制在三次以内。满屏高亮的视觉噪音比不高亮还糟。

摘要里带一点结构化信息比纯文字有用。比如把分类名和「已核对」的时间放在摘要末尾,用户不用点进去就能判断时效性。

搜索结果页本身保持 noindex。它不该进索引,也不该出现在 sitemap 里。

本文标签 搜索结果摘要 关键词高亮 站内搜索体验
← 上一篇 只知道慢不知道慢在哪:目录站后端链路追踪该埋哪几个点 下一篇 → gzip、Brotli、zstd 该开哪个:目录站的

— 本文完 —

提交网址

发现好站,欢迎自荐收录

站内搜索

站点统计

  • 今日审核0
  • 已收录站点3744
  • 正常访问3737
  • 失联站点7
  • 累计访问175

网站分类

  • AI工具 0
    AI对话0 AI绘画0 AI写作0 AI编程0 AI音视频0 AI办公效率0
  • 开发编程 0
    前端开发0 后端开发0 移动开发0 开源与代码托管0 数据库0 开发文档与教程0
  • 设计素材 0
    UI设计0 图标素材0 免费图库0 字体下载0 配色工具0 设计模板0
  • 站长工具 0
    网站统计0 SEO工具0 域名与主机0 收录提交0 建站程序0 运维监控0
  • 学习教育 0
    编程教程0 语言学习0 职业技能0 公开课与慕课0 考试题库0 中小学教育0
  • 生活服务 0
    交通出行0 外卖点餐0 房产租房0 医疗健康0 政务办事0 快递物流0
  • 影音娱乐 0
    影视观看0 音乐音频0 游戏资源0 短视频直播0 小说阅读0
  • 电商购物 0
    综合商城0 比价工具0 导购返利0 二手交易0 团购优惠0
  • 综合其他 1
    实用工具0 资源合集0 小众站点0 个人博客0 论坛社区0
  • 新闻资讯 0
    科技资讯8 财经媒体1 行业动态0 社会热点0 综合门户0
  • 资讯文章 350

最新收录

  • freeCodeCamp
  • DigitalOcean
  • 途牛旅游网
  • 快手
  • 新东方
  • gzip、Brotli、zstd 该
  • 搜索结果里那段摘要怎么来的:目录站的
  • 只知道慢不知道慢在哪:目录站后端链路

浏览排行

  1. 满分作文网 6
  2. Let's Enhance 3
  3. 淘菜菜 3
  4. MasterClass 3
  5. TypeScript 中文网 3
  6. Zhengziying 3
  7. 得意生活 3
  8. 镇江网友之家 3

联系我们

bQ:12345678

电话:400-8888-888

邮箱:admin@example.com

时间:09:00-21:00

友情链接

车机屋·焊锡条·探兔AI导航·静电测试仪·大学生联盟

关于我们|广告合作|隐私条款|网站地图

原ICP备00000000号-1,@2026

由 Z-BlogPHP 驱动