通搜百科是一个多语言在线百科网站,域名 baike.tongsou.com,2026 年 9 月上线。 它不自建抓取和抽取能力,而是把这些能力从域名库取用,自己专注在词条、 索引和界面这三件事上。站点支持 14 个语种,所有语种共用同一个义项编号。
定位
通搜百科跟域名库的关系,跟快搜开放平台跟域名库的关系是一样的: 域名库是能力层,通搜百科是消费方。域名库不认识用户也不认识钱, 只负责抓取网页和抽取正文;通搜百科管自己的词条库、检索索引和用户界面。
这个分工带来一个硬约束:两个服务必须在同一台机器上。域名库的接口只接受
回环调用,请求头里带了 X-Forwarded-For 一类的字段就会被直接拒绝。
这不是配置问题,是设计如此。
能力层与消费方的边界一旦模糊,两边就会各自长出对方的功能。 宁可接口多一道,也不要让职责糊在一起。
与其他消费方的关系
目前域名库有两个消费方,将来会更多:
| 消费方 | 端口 | 取用的能力 | 自己管什么 |
|---|---|---|---|
| 快搜开放平台 | 8916 | 读取网页 | 用户、配额、计费 |
| 通搜百科 | 8940 | 读取网页、实体数据 | 词条、索引、界面 |
词条地址
词条的地址由三段组成:语种、词条名、义项编号。
/zh/通搜百科/1
/en/Tongsou-Wiki/1
义项编号是唯一真实的标识,词条名那一段只是给人看的。 14 个语种共用同一个编号,所以只要知道编号就能算出全部 14 个地址, 多语言声明不需要另外维护一张映射表。
三条定死的规矩
- 词条名不可变。 要改名等于删掉旧的、新建一条(拿新编号)。
- 已删除的编号不复用。 复用会让外面引用旧地址的链接指到无关的内容, 那比页面不存在更糟——是内容被掉包。
- 名字对不上时跳转到规范地址,而不是报错。用户照样看得到内容, 地址会被自动修正,搜索引擎也只会收录一个地址。
不带编号的写法
只写名字不写编号也能访问,会跳到该名字的默认义项:
/zh/通搜百科 → /zh/通搜百科/1
这一条是为了让不知道编号的链接不落空——外部引用、手敲的地址、 从别处抄来的名字。用的是临时跳转而不是永久跳转,因为默认义项会变: 出现一个更重要的同名词条时,默认义项要能换过去。
词条分类
分类分成两个互不干扰的维度。
词条类型
回答「这是个什么东西」——电影作品、药品、火车站。 它决定正文模板和结构化数据类型,每条词条必须选一个。 现有 16 个一级分类、175 个二级分类。
分类表是照百度百科改的,但去了重。百度那 172 个二级里有 21 处跨一级重复:
- 「生活」和「交通」有 10 个二级一字不差
- 「艺术」和「娱乐」有 11 个二级一字不差
那不是部分重叠,是同一张表出现在两个一级下面。照抄的话, 一部电影落到哪个分类完全随机。
学科主题
回答「属于哪个领域」——物理学、语言学、冶金学。 它用于浏览和聚合,一条词条可以挂多个,也可以不挂。
一条讲相对论的词条,类型是「定理定律」,学科是「物理学」,两个都对。 把它们合进同一棵树就得二选一,所以分开。
正文语法
正文用 Markdown,另外支持几种双链写法。
双链
[[词条名]]指向该词条的默认义项[[全称|显示名]]链接指向全称,页面上只显示别名[[词条名#章节]]直接跳到该词条的某个章节![[词条名#章节]]把那个章节的内容嵌进来
指向还不存在的词条会渲染成红链。红链不是错误——它标出 「这个概念被引用了但还没人写」,是补词条的优先队列。
嵌入有两道防线:最大递归两层,以及路径成环检测。 两道缺一不可——层数上限管「嵌套太深」,成环检测管「互相引用」, 而且成环的诊断优先于层数,否则作者会往错误的方向找问题。
下面是一次嵌入,引用的是本词条的「定位」一节:
数学公式
公式写在美元符号之间,行内的像 $E = mc^2$ 或者 $a_1 + b_2$,
渲染交给浏览器,服务端只负责把它原样带过去、不让 Markdown 的语法把它嚼碎
(不保护的话 $a_1 + b_2$ 里的下划线会被当成强调)。
块级公式独占一行:
图片
正文里的图和概述图都走 /media/ 这条路。真图还没有,
所以现在显示的是图位——一张标着文件名和尺寸的占位图。

用图位不用碎图标是有理由的:碎图看不出「这里本来该有什么」, 编辑和读者都判断不了是图没传还是地址写错了。图位上写着文件名, 两种情况一眼分得开。
技术构成
后端是 Go,检索计划用 Manticore Search。数据分两处存:
- TiKV 正文与历史版本。海量、大值、只按键取。
- TiDB 元数据与二级索引。要多维查询:按分类列、按标签筛、查反向链接。
正文只在 TiKV 里有一份,TiDB 存指针,这样两边不会漂移。 同步到检索引擎用出站箱模式,不双写——双写一定会漂移, 一边成功一边失败时没有回滚点。
界面
界面复用了域名库后台的 AdminLTE 外观,但那是一次性的快照—— 复制完就分家,域名库以后改模板这边不会跟上。真正共用的是能力,不是代码。
已经付出过一次代价:noindex 这个标记跟着复制过来了。 在域名库那边是对的(内部工具不该被收录),在这边把整个前台从搜索引擎里 抹掉了,时间因子、多语言声明、结构化数据全被这一行抵消。
复制外观带过来的不只是样式,还有那边的假设。
搜索引擎适配
四家搜索引擎要的时间因子格式互相冲突,同一个时间点必须出两种字符串:
| 搜索引擎 | 载体 | 时区 |
|---|---|---|
| 百度 | JSON-LD,指向资源平台,没有类型字段 | 不带 |
| 头条 | 专用的 meta 标记 | 带 |
| 谷歌 | schema.org | 官方要求带 |
| 必应 | schema.org 加 OpenGraph | 带 |
给百度带时区它不一定认,给谷歌不带时区它会按爬虫自己的时区解。
参见
浏览次数:175 次
阅读量:134 次 · 阅读完成量:26 次
最近更新:2026-09-13T14:27:33Z
编辑次数与历史版本要等版本管理落地。
完成率 = 阅读完成量 ÷ 阅读量,分母是阅读量不是浏览次数 ——
关了 JS 的、秒退的都在浏览次数里、不在阅读量里。
详细口径在后台的「数据统计」页。