一、概述
搜索引擎是数据结构与算法的"集大成者"。从网页爬取到最终返回搜索结果,几乎用到了所有经典数据结构和算法。
Mermaid · 渲染中(下方为源码)
graph LR A[搜集] --> B[分析] B --> C[索引] C --> D[查询]
| 阶段 | 核心问题 | 涉及算法/结构 |
|---|---|---|
| 搜集 | 爬取网页、去重 | BFS/DFS、布隆过滤器、散列表 |
| 分析 | 提取关键词、计算权重 | 分词、TF-IDF、PageRank |
| 索引 | 建立倒排索引 | 散列表、跳表、B+树 |
| 查询 | 匹配+排序返回 | 字符串匹配、堆、归并排序 |
二、搜集阶段
2.1 爬虫的 BFS 策略
从种子 URL 出发,广度优先逐层爬取:
Mermaid · 渲染中(下方为源码)
graph TD S[种子URL] --> A[页面A] S --> B[页面B] S --> C[页面C] A --> D[页面D] A --> E[页面E] B --> F[页面F]
- 用队列存储待爬 URL
- 逐层扩展,优先爬取"浅层"重要页面
2.2 URL 去重
10 亿级 URL 判重方案: