















本文旨在系统梳理现代搜索引擎的体系结构、核心算法与信息检索方法,来源于经验及研究总结,难免有疏漏之处,欢迎指出。
本篇与《现代 SEO 深度解析:原理、算法与实战》是互补的关系,如果您已阅读完本文并对 SEO 感兴趣,可以了解后文,> 点击跳转
搜索引擎(Search Engine)是一类用于从大规模数据集中高效检索信息的系统,它主要由以下模块组成:
Crawling):负责发现并下载互联网上的海量网页内容。Indexing):将抓取到的内容加工,转换为能被机器快速检索的数据结构。Ranking):根据用户提交的查询词,结合其意图,对已索引的候选内容进行重要性或相关性排序。Query Interface):提供用户输入查询的界面,并把处理后的搜索结果呈现给用户。现代搜索引擎的典型工作流程可以概括为:
graph TD
A[源数据:网页、文档、多媒体等] --> B(爬取);
B --> C{结构解析 + 数据清洗};
C --> D[建立索引];
D --> E[建立传统 + 语义/行为模型];
E --> F[最终给用户展示的搜索结果UI];搜索引擎需要处理形形色色的数据类型:
Crawling#抓取是搜索引擎获取信息的第一步,通过自动化程序(也就是爬虫)遍历互联网。
HTML <a> 标签超链接:网页间互相引用的最主要方式。<link>、<script>、<img> 等资源标签:这些标签里也可能藏着指向其他资源的 URL。sitemap.xml:站长主动递交的「地图」,告诉爬虫网站有哪些页面。Backlinks):其他网站「推荐」本站的链接,是重要的发现来源。Crawl Strategies#广度优先)深度优先)Crawl Budget#搜索引擎不会无限量地抓取一个网站,它有一个「抓取资源上限」,也就是抓取预算。
网站有多种方式来引导搜索引擎爬虫的行为:
robots.txtDisallow: /private/ (告诉爬虫不要进这个目录)<meta name="robots"><head> 部分,对当前页面进行页面级控制。<meta name="robots" content="noindex, nofollow">noindex:告诉搜索引擎不要把这个页面收录到索引里。nofollow:告诉搜索引擎不要追踪这个页面上的链接。X-Robots-TagX-Robots-Tag: noarchive (告诉搜索引擎不要存档这个页面)禁止抓取 ≠ 禁止索引 ≠ 禁止展示 这三者是不同的概念。比如,robots.txt 禁止了某个页面被抓取,但如果其他网站大量链接到这个页面,搜索引擎可能仍然会知道它的存在,甚至在搜索结果中显示它的标题(但内容无法展示)。这三者逻辑不同,将在 SEO 部分详细展开。
Indexing#索引的最终目的:将爬虫收集到的海量内容,转化为能被搜索引擎快速检索的数据结构。
原始文本在被建立索引前,要经过一系列的处理:
Tokenization)MM):从左向右尝试匹配词典中最长的词。简单但误差可能较高。RMM):从右向左匹配,通常认为效果优于正向匹配。隐马尔科夫模型):基于统计概率模型,更适合处理大规模词库和复杂语境。的、了、是,英文的and、the、a。Stemming) / 词形还原(Lemmatization)reducing → reduced → reduces 都归结为 reduce。这能有效减少索引量,并提高匹配率。Inverted Index#倒排索引是搜索引擎最核心的数据结构之一。
[document_id1, document_id2, ...])。此外,通常还会记录词频、位置等信息。AND、OR、NOT 等逻辑操作,进行复杂查询。Vector Index#现代搜索引擎越来越依赖向量索引来实现语义搜索。
FAISS、Milvus、HNSWlib 等。Content Deduplication#搜索引擎需要避免大量重复内容的索引,这会降低搜索质量。内容去重就是解决这个问题的。
固定窗口切片):将文档切分成多个小片段,对每个片段计算哈希值,通过比较哈希集合的相似度来判断文档是否重复。局部敏感哈希):为整个文档生成一个紧凑的哈希值,相似的文档会得到相似的 SimHash 值。Ranking#搜索引擎的排序模型,核心目标是衡量候选文档与用户查询之间的相关性,并按最相关程度呈现结果。现代排序体系通常分为多阶段处理,以平衡效率和准确性:
现代搜索引擎的典型排序流程:
graph TD
A[用户查询] --> B(倒排索引召回);
B --> C(初排);
C --> D(语义重排);
D --> E(返回给用户);PageRank 是 Google 早期的核心算法之一,它用于评估网页的重要性和权威性。它的衡量标准不是网页的内容质量本身,而是:
这个页面被谁引用、被引用了多少
也就是说: 被高质量页面引用越多 → 越重要
PageRank 的核心思想是将互联网上的链接视为一种「投票」。一个网页的 PageRank 值(PR(pi)PR(p_i))越高,通常意味着它被认为越重要或越权威。
PR(pi)=1−dN+d⋅∑pj∈M(pi)PR(pj)L(pj)PR(p_i) = \frac{1 - d}{N} + d \cdot \sum_{p_j \in M(p_i)} \frac{PR(p_j)}{L(p_j)}解释:
| 符号 | 含义 | 理解方式 |
|---|---|---|
| PR(pi)PR(p_i) | 页面 pip_i 的 PageRank 值 | 页面在 Internet 上的重要程度 |
| M(pi)M(p_i) | 所有指向 pip_i 的页面集合 | 谁引用了它 |
| L(pj)L(p_j) | 页面 pjp_j 的外链数量 | 引用者贡献会被平分 |
| dd | 阻尼系数(约 0.85) | 模拟用户继续浏览的概率 |
| 1−dN\frac{1 - d}{N} | 随机访问补偿 | 防止出现死链、闭环结构偏置 |
note
一个页面的重要性,部分取决于引用它的页面的重要性。 引用者越重要,贡献越大;引用越多,贡献越分散。
PageRank 衡量的是
引用来源的质量,而不是引用数量。
PageRank 作为 Google 早期排名核心的地位早已过去。Google 在 2016 年已停止公开更新 PageRank 工具栏,其原始算法在当前搜索引擎中的直接权重已微乎其微。
现代搜索引擎的排名算法极其复杂,通常包含数百甚至数千个信号,远远超出了单一的 PageRank 模型。然而,PageRank 提出的「链接作为投票」的基本理念,其思想和原理仍然被融入到更复杂、更先进的链接分析算法中。
| PageRank 主导时期 | 现在 |
|---|---|
| 主要排序依据 | 仅作为众多排名信号之一 |
| 链接可信度高 | 链接容易被 SEO 操纵,需结合其他因素判断 |
| 信息量小,网络结构相对简单 | 网络复杂,语义理解和用户意图更重要 |
如今搜索排序更多依赖但不限于以下因素:
Embedding / Transformer 等大模型,深度理解用户查询和内容含义。CTR/Dwell Time 等,这些指标直接反映用户对搜索结果的满意度。总结:PageRank 的核心逻辑已演变为现代复杂链接分析中的
辅助因子,其原始形式不再是主导。
note
PageRank 深刻影响了搜索引擎的发展,但作为单一的排名模型,它已成为历史。然而,其「高质量引用等于高价值」的基本理念,依然是现代搜索引擎链接分析的基础之一。 引用质量 > 引用数量
BM25 是一种广泛应用于信息检索领域的关键词匹配评分算法,用于评估文档与查询之间的相关性。它是很多搜索引擎初排阶段的基石。
公式:
BM25(q,D)=∑t∈qIDF(t)⋅f(t,D) (k1+1)f(t,D)+k1(1−b+b⋅∣D∣avgDL)\mathrm{BM25}(q, D) = \sum_{t \in q} \mathrm{IDF}(t)\cdot \frac{f(t, D)\,(k_1 + 1)} {f(t, D) + k_1\left(1 - b + b\cdot\frac{|D|}{\mathrm{avgDL}}\right)}BM25 主要解决了文本匹配中的几个实际问题:
| 问题 | BM25 的做法 | 直觉效果 |
|---|---|---|
| 单词重复刷权重 | 词频饱和曲线 | 某个词在文档中重复 100 次 ≈ 重复 5 次,避免过度刷词。 |
| 长文权重不应过高 | 长度归一化 | 长文章不会天然地比短文章「更相关」,避免长文优势。 |
| 稀有词应被强调 | IDF 权重 | 「专有名词」或「稀有词」的权值会比「普通词」更高。 |
通常位于搜索引擎的初排阶段,对通过倒排索引召回的文档进行初步打分,从而筛选出前 100~1000+ 候选结果进入下一阶段。
LTR#随着网页质量差异的增大、用户行为数据的积累以及特征工程的成熟,搜索引擎需要一个可学习的排序模型来综合判断文档相关性。这就是 LTR。
典型 LTR 模型:
| 模型 | 核心思想 | 训练方式 |
|---|---|---|
| RankNet | 基于成对比较 (pairwise) | 「文档 A 应该排在文档 B 前面」 |
| LambdaRank / LambdaMART | 直接优化排序指标 ( 如 NDCG) | 现代主流搜索引擎通用,效果出色 |
| ListNet / ListMLE | 直接对列表整体排序 | 更具理论性,但训练通常更复杂和困难 |
为什么要用 LTR?
如果用户总是点搜索结果列表中的第 3 条,并且停留很久,那么排序模型就会「学习」到这条结果可能更优质,从而慢慢将其排到第 1 条。
note
搜索引擎的排序,早已不是简单地为「网页写给机器看」来排序, 而是真正地为 「用户用脚投票」 来排序。
Neural Re-ranking#现代搜索,尤其是在处理复杂查询和理解用户深层意图中,已经进入了纯语言理解阶段。语义重排利用深度学习模型来更精确地衡量查询和文档间的语义相关性。
使用模型:
| 类型 | 模型例子 | 特点 |
|---|---|---|
| 句向量模型 | SBERT / E5 / bge | 生成文本的稠密向量表示,主要用于粗语义召回或过滤。 |
| 精排模型 | Cross-Encoder / ColBERT / RAG Reranker | 对少量候选结果做深度语义比对,计算细粒度相关性。 |
典型流程:
graph TD
A[用户查询] --> B(倒排召回 / BM25);
B --> C(粗语义召回 / Embedding);
C --> D(精语义重排 / Cross-Encoder);
D --> E(返回给用户);为什么不直接让大模型排序所有网页?
因为计算成本是指数级差异,不可能直接用最复杂的模型处理所有数据:
| 模型阶段 | 每次排序成本 | 处理规模与可行性 |
|---|---|---|
| BM25 | < 10 ms | 可对百万到亿级网页进行快速排序 |
| 向量检索 | 1 ~ 100 ms | 可对千级到万级候选进行语义筛选 |
| 大模型精排 | 100 ~ 1000+ ms | 只能对几十条精选结果做深度处理 |
| 排序层级 | 方法 | 作用 | 处理规模 |
|---|---|---|---|
| 初排 (Recall) | BM25 / TF-IDF | 快速找出可能相关的文档 | 106∼10810^6 \sim 10^8 |
| 语义筛选 | 向量检索 | 找出语义上真正相关的文档 | 103∼10410^3 \sim 10^4 |
| 精排 (Re-rank) | Cross-Encoder / LTR | 找到最符合用户需求的文档 | 10∼10210 \sim 10^2 |
信息检索的本质,是提取核心概念。避免使用口语化的完整句子。
为什么我电脑上网速度很慢应该怎么办wifi slow fix driverwifi latency diagnose "network adapter" windows核心规则:从中文语义出发 → 提炼关键名词 → 优先使用英文技术词(如果问题涉及技术领域)。
使用双引号 " 来强制搜索引擎精确匹配某个词或短语,不拆分、不改写。这能显著减少无关结果,提升精度。
"舞萌 DX" 评分"start dash" maimai"openwrt" "ipv6 relay"使用 site: 指令将搜索范围限定在特定网站,直达专业信息源。
site:xice.cx openwrt ( 在我的 blog 上找 OpenWrt 相关内容 )site:zhihu.com maimai 难度 ( 在知乎上搜 maimai 难度讨论 )site:wiki.archlinux.org f2fs (Arch Linux Wiki 中关于 F2FS 的资料 )site:github.com magisk ( 在 GitHub 找 magisk 相关项目 )掌握
site:,几乎可以100% 命中最有价值的权威技术答案。
在关键词后加上 减号 - 可以排除包含特定词语的结果,有效过滤噪音信息。
openwrt ipv6 优先级 -贴吧 -抖音 -小红书maimai dx 曲目 推荐 -bilibili当中文搜索结果充斥着低质量或营销信息时,「减法」指令往往比「加法」更重要、更有效。
使用 filetype: 指令直接搜索特定文件类型,如 PPT、PDF、Word 文档等。
maimai 音频 filetype:ogg ( 寻找 maimai 的 OGG 格式音频 )互联网 基础设施 filetype:pdf ( 查找互联网基础设施相关的 PDF 文档 )openwrt 网络 拓扑 filetype:docx ( 搜索 OpenWrt 网络相关的文档 )通过
filetype:,你绝大多数情况下可以直接找到高质的学术资料。
当信息具有时效性时(例如软件版本、AI 模型、新闻事件),限定搜索结果的时间范围非常关键。
openwrt wireguard 教程 2024 ( 限定搜索 2024 年的 WireGuard 教程 )archlinux hyprland install 2025 ( 查找 2025 年的 Arch Linux Hyprland 安装指南 )或者,直接在 Google 搜索结果页面的「工具」中选择「不限时间」→「过去一年 / 过去一月」等选项。
「反向搜索」可以帮助你找到图片来源、句子出处或相似内容。
"原文句子" -微博 -抖音 -小红书不要直接搜索具体遇到的「问题」,而是要搜索该问题的「结构」或「解决模式」。这能让你从症状直接触达科学诊断方法。
例如,你想找解决「延迟不稳」的方法,不要搜:
而是要转换为技术概念:
搜索不是「被动地找一个答案」,而是「主动地定位信息」。只要你将问题表达得足够结构化、足够精准,你所寻找的答案永远存在。
搜索引擎不是 Chat GPT,它更擅长处理结构化的关键词,而不是长篇大论的「倾诉」。
为什么我的 WiFi 总是特别卡而且有时候会掉线应该怎么办啊有没有办法解决这种输入对搜索引擎来说就是噪音,它很难从中准确抽取出核心关键词。
wifi disconnect random fix / network unstable diagnoseWiFi 掉线 诊断 / 家宽 网络抖动 测试不要跟搜索引擎倾诉,请直接表达「问题核心词」。
大多数小白搜索失败后,只会抱怨:
「百度 /Google 根本搜不到有用的信息」
搜索失败,往往不是搜索引擎的问题,而是关键词结构不对。此时,应当改写关键词,而不是盲目翻页。
EXAMPLE
第一次输入 改写 提高 maimai 分数maimai 推分wifi 卡bufferbloat test游戏 延迟udp relay latency diagnose
在中文互联网环境下,垃圾、低质量内容泛滥时,减号语法 - 格外重要。
openwrt ipv6 配置教程openwrt ipv6 教程 -知乎 -抖音 -小红书 -CSDN ( 直接剔除那些信息密度低 / 重复 / 营销性强的内容 )很多人在搜索时,习惯于搜解释,但真正有价值的往往是HOW TO DO。
| 错误输入 | 结果 | 搜解决方案 | 结果 |
|---|---|---|---|
什么是 bufferbloat | 各种理论定义 | bufferbloat fix fq_codel | 具体的配置、优化指令和方法 |
在技术、学术或系统问题领域,优先进行英文搜索。因为权威信息源通常原生就是英文的。
游戏服务器 tick 解释game server tick rate netcode信息链路通常是这样的:
论文 / 标准 → 英文 wiki / docs → 国外论坛 / 博客 → 中文翻译 / 二创 → 小红书 / 知乎 /CSDN
搜索引擎的本质不是答案机,它是一个高效的知识映射工具。 你需要先明确自己要找什么类型的信息,再进行检索。
先分类,再检索:
| 问题类型 | 检索目标 | 示例 |
|---|---|---|
| 原理类 | wiki / RFC / MDN / Docs | dns recursion rfc |
| 配置类 | 官方文档 / issue | openwrt mwan3 configuration |
| 故障类 | 日志错误码 | systemd service failed exit code |
搜索不是「把问题原封不动地交给搜索引擎」,而是「你给出的关键词质量,决定了你所能看到的世界广度和深度」。
tips
本章将侧重于可读性和核心流程,不会死磕复杂的算法细节,但会保证整体结构和概念的准确性。
典型的搜索引擎内部架构可以抽象为以下五大核心模块:
graph TD
A[User Query] --> B(Query Processing)
B --> C(Index + Ranking System)
C --> D(Document Storage + Cache)
D --> E(SERP Rendering)核心机制
遍历链接:通过页面上的链接,不断发现新的 URL。 遵守
robots.txt公约:尊重网站设置的抓取规则。 防止无限爬取(循环检测):避免陷入无限循环或抓取冗余内容。 自适应更新频率:对更热门、更新频繁的页面,会以更高的频率进行抓取。
基本流程: 初始 URL 列表 → 抓取页面 → 抽取新链接 → 加入待抓取队列 → 重复此过程。
爬虫并非无脑抓取所有内容,它会根据权重和重要性优先抓取「更有价值的网页」。
爬取来的原始网页通常不能直接用于检索,需要经过一系列的规范化处理:
| 步骤 | 解释 |
|---|---|
| 去除 HTML 样式和脚本 | 只保留页面中的纯文本内容。 |
| Tokenization | 将文本切分成有意义的词语单元,中英文处理策略不同。 |
| Lemmatization | 将不同词形还原为基本形式,如:studying → study。 |
| Stopwords | 移除常见但无检索意义的词,如:的 / a / the / 是 / 了。 |
| Inverted Index | 搜索引擎的核心数据结构,为快速检索打下基础。 |
倒排索引的例子:
"openwrt" → 文档 ID:[1, 3, 7, 9, ...]"ipv6" → 文档 ID:[3, 9, 10, 14, ...]经过规范标准化处理后,每个关键词都对应一个或多个文档 ID,关键词越小、越精确,搜索速度通常越快。
搜索引擎的排序模型,是决定搜索结果质量的关键。它通常由两个维度的评分组成:
| 种类 | 用于 | 示例 |
|---|---|---|
| 静态评分 | 判断网页的整体固有价值 | PageRank、域名权重、网站声誉等 |
| 动态评分 | 反映用户与网页的实时交互与满意程度 | CTR、Dwell Time、用户跳出率等行为统计 |
PageRank 原理简单回顾: 一个网页的 PageRank 价值,大致等于所有指向它的网页的 PageRank 价值之和,再根据这些指向网页的出链数量进行平均分配。
动态排序机制,使得搜索引擎能够不断学习和进化,根据用户的真实反馈来调整排名。
当用户输入一个查询词时,搜索引擎会在内部进行复杂的「查询处理」,以更好地理解用户意图:
maiami → maimai。router ⇆ gateway ⇆ CPE。舞萌 是一个游戏名称,而不是关于「舞蹈」的视频。用户输入的原始查询,实际上会被搜索引擎重写成一个更准确、更丰富的内部查询表达。
搜索结果页面(SERP, Search Engine Results Page)并不是一个纯粹的链接列表,而是会根据用户意图动态生成布局:
搜索引擎不是在简单地「猜你的意图」,而是在进行精密的意图分类路由,将查询导向最适合的展示模板。
Feedback Loop#现代搜索引擎是一个「活的系统」,它会持续记录和学习用户的行为数据,形成一个反馈闭环,从而不断优化排序结果:
| 指标 | 含义 | 对排序的影响 |
|---|---|---|
| CTR | 用户是否点击了这条搜索结果 | 高点击率 → 排序权重 ↑ |
| Dwell Time | 用户在点击结果页面后停留了多久 | 停留时间长 → 表明内容有价值,排序权重 ↑ |
| Pogo Sticking | 用户点击后迅速返回搜索结果页 | 表明内容不满意,排序权重 ↓ |
你越是频繁地使用搜索引擎,它就越能提供个性化的搜索结果。
至此,我们已经过完了现代搜索引擎的大体逻辑。这里我们埋个坑,未来可能会出一期手把手教你搭建搜索引擎。至于这有什么用?我们不是已经有 Google/Bing 了? 是这样,但这样干的确很好玩。
Thanks For Watching.
您可以通过 Telegram 以及我的个人邮箱 [email protected] 来联系我,欢迎对本文纠错,不胜感激。
本篇与《现代 SEO 深度解析:原理、算法与实战》是互补的关系,如果您已阅读完本文并对 SEO 感兴趣,可以了解后文,> 点击跳转
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。