三个阶段
一、抓取(Crawling)
搜索引擎用网络爬虫(Spider/Crawler)自动访问网页。
- 从一批种子 URL 开始;
- 下载页面,提取其中的链接,加入待抓取队列;
- 重复,不断扩展。
爬虫要遵守的规则:
- robots.txt:网站可以声明哪些内容不允许抓取;
- 抓取频率控制:不能给网站服务器造成过大压力;
- 去重:避免重复抓取相同内容。
挑战:网页数量以千亿计,且不断变化。爬虫需要判断哪些页面值得优先抓取和更新。
二、索引(Indexing)
抓取到的页面需要建立倒排索引(Inverted Index)。
正排索引是"文档 → 包含哪些词";倒排索引反过来,是"词 → 出现在哪些文档中"。
有了倒排索引,当用户查询"量子计算"时,系统可以直接找到包含这两个词的所有文档,而不必遍历全部网页。
索引中还会记录:词频、词在文档中的位置、段落、标题等信息——这些用于后续的排序。
处理流程还包括:
- 分词(中文分词比英文复杂,因为没有空格分隔);
- 去停用词("的""了""是"这类高频无实义的词);
- 词干提取(英文中将"running""runs"归一为"run");
- 识别页面的结构化信息(标题、正文、链接、图片、发布时间)。
三、排序(Ranking)
从索引中匹配到的文档可能有数百万篇,需要按相关性和质量排序。
经典算法思路:
TF-IDF:衡量一个词对文档的重要程度。
- TF(词频):词在文档中出现的频率;
- IDF(逆文档频率):词在所有文档中的稀有程度。越稀有,区分度越高。
PageRank:利用网页之间的链接关系评估权威性。
基本思想:被越多重要网页链接的页面,本身也越重要。这是一个递归定义,通过迭代计算求解。
BM25:TF-IDF 的改进版本,考虑了文档长度归一化和词频饱和效应,是经典的检索模型。
现代排序:早已不是单一算法,而是机器学习排序(Learning to Rank)——用数百个特征(相关性、页面质量、时效性、用户行为、页面加载速度、移动端友好度……)训练模型,给出最终排序。
查询理解
用户输入的不只是关键词。搜索引擎要做:
- 分词与词性识别;
- 同义词扩展("手机"和"智能手机");
- 意图识别(是找信息、找网站、还是要买东西);
- 实体识别("北京天气"中的"北京"是地点);
- 拼写纠错。
一个简单的 SEO 建议
与其研究"怎么让搜索引擎喜欢",不如回到本质:
- 内容本身对用户有价值;
- 结构清晰、加载快、移动端体验好;
- 被其他优质网站自然引用。
现代搜索引擎的核心目标,就是奖励这些。
说明:本文为信息检索的公开知识整理。