资讯文章 资讯 · NEWS
搜「网页设计」出不来「网站设计」:目录站那份搜索词典该怎么养
2026-10-24 约 1,803 字 预计阅读 5 分钟 yiyunkj
搜
做目录站的人多半遇到过这种情况:库里明明有一批设计类站点,用户搜「网页设计」却一条都没有,搜「网站设计」就全出来了。或者搜「短视频」没有结果,搜「抖音」一大堆。
这跟排序算法没关系,是词对不上。搜索引擎的工作方式是拿用户输入的词去匹配库里的词,两边不是同一个词,再好的排序也无从谈起。

图片来源:网络,版权归原作者所有,侵权请联系删除
先分清两件事:分词和同义
| 环节 | 要解决的问题 | 典型手段 |
|---|---|---|
| 分词 | 把一整句切成可匹配的词 | 分词器、自定义词典、停用词 |
| 同义 | 让不同的词指向同一批结果 | 同义词表、别名字段、错字映射 |
中文分词是第一步。英文靠空格天然分好了词,中文没有这个分隔符,「上海自来水」到底切成「上海 / 自来水」还是「上海 / 自来 / 水」,取决于分词器。切错了,索引里存的就不是用户会搜的那个词。
常见选择有三档:
- MySQL 自带 ngram:5.7.6 以后内置,对中文按固定长度切(默认 2 字)。不需要额外组件,但它是机械切分,「设计」两个字被拆开的情况很常见,长词召回差。
- 分词库预先切好再入库:用 jieba 这类库在写入时切好词,存进一个专门的检索字段。可控性最高,支持自定义词典,中小规模目录站够用了。
- 独立搜索引擎:Elasticsearch 配 IK 之类的中文分词插件,或者数据库自带全文引擎。规模上万条之后再考虑,运维成本不是一个量级。
目录站如果条目在几千条这个量级,第二档是性价比最高的:入库时切词,检索时也切词,两边用同一套词典。
自定义词典里该放什么
通用分词器对行业词汇基本无能为力。目录站需要补进去的词,主要是这几类:
- 品类名:一站成名的新词、缩写、产品名(比如「图床」「建站」「无代码」),这些词通用词典里要么没有,要么会被切碎。
- 站点名:你收录的那些站点自己的名字,尤其是英文名和混合名。
- 不该被拆的词:有些词会被切成两半导致误召回,需要强制绑定。
反过来,停用词表也要维护。「的」「了」这类虚词不必进索引,还有一类是目录站特有的高频噪音词——「官网」「首页」「网站」,这些词几乎出现在每个条目的描述里,留着只会稀释区分度。
同义词表才是真正见效的部分
分词解决的是「切得对」,同义词解决的是「连得上」。目录站最常见的三种同义关系:
- 全称与简称:短视频 / 抖音、直播 / 网络直播。
- 说法差异:网页设计 / 网站设计 / 建站 / 网页制作。
- 错字与习惯写法:这是最容易被忽略的一类——用户打错的字,你一样要认。
实现方式有两种,各有适用场景:
查询时扩展:用户输入「网页设计」,系统把它展开成「网页设计 OR 网站设计 OR 建站」再去查。好处是改词典立刻生效,不用动索引;坏处是查询变长,词多了以后性能会掉。
索引时扩展:写入条目的时候就把同义词一起写进检索字段。查询性能好,但改一次词典就要重跑一遍全量索引。
实用的做法是混着用:稳定的、长期的等价关系(品类名、简称)在索引时展开;临时的、从日志里刚挖出来的新词先在查询时扩展,观察一段时间确认有效,再固化进索引。
词从哪来:别拍脑袋写
同义词表最容易变成一份没人维护的死文档,因为一开始是拍脑袋写的。真正有持续价值的做法是从三个地方挖:
- 零结果日志。搜了但一条都没出的词,按次数排序,前面几十个就是最该补的。这是投入产出比最高的一份清单。
- 低点击查询。出了结果但用户一条没点,说明召回的东西不对路,往往也是词没对上。
- 会话改写。同一个用户连续搜了两个不同的词,第二个很可能是他对第一个的修正,这两个词大概率是同义或纠错关系。
挖出来之后要人工过一遍再进表。机器统计出来的关联里有大量噪音,直接灌进去会把不相关的条目搅到一起。
改完词典,别忘了重建索引
这是最常踩的一个坑:词典改了,同义词加了,线上搜索一点变化都没有。原因是索引是写入时按旧词典建的,检索字段里存的还是旧的切分结果。改了分词或索引时扩展的同义词,必须重跑一次全量重建,否则改了等于没改。
重建这件事本身要注意几点:放在低峰跑,别锁表;重建期间保持旧索引可用,切的时候原子切换;重建完抽查 10 个历史查询,确认结果没有变差。
怎么判断有没有变好
别只看「搜到了没有」。三个指标一起看:
- 零结果率:搜了没结果的查询占比,这是词典效果最直接的反映。
- 首条点击率:排在第一位的条目被点的比例,反映召回的东西对不对。
- 改写率:用户搜完一次又换个词重搜的比例,这个数字高说明第一次没给对。
每次改完词典,把这三个数记下来对比。词典是养出来的,不是一次建完就放着——三个月没人动的同义词表,基本等于没有。