光一样的少年|| 通用搜索引擎背后的技术点,图解( 二 )


4.为了能更好地理解用户的真实用途 , 需要进行检索词的意图理解、词条切分、同义词替换、语法纠错等处理 , 再根据这些检索词去获取数据 , 为用户找到心中所想的网页 。
比如检索词为"老鹰" , 可能是自然界的老鹰 , 也可能是NBA的一只球队:
搜索引擎中的网络爬虫就是网页的搬运工 , 负责将互联网上允许被抓取的网页进行下载 , 如果把搜索引擎看作一家餐厅 , 网络爬虫模块就是餐厅的采购员 。
内容处理模块
负责将网络爬虫下载的页面进行内容解析、内容清洗、主体抽取、建立索引、链接分析、反作弊等环节 。
内容存储模块
存储模块是搜索引擎的坚强后盾 , 将抓取的原始网页、处理后的中间结果等等进行存储 , 这个存储规模也是非常大的 , 可能需要几万台机器 。
用户解析模块
用户模块负责接收用户的查询词、分词、同义词转换、语义理解等等 , 去揣摩用户的真实意图、查询重点才能返回正确的结果 。
内容排序模块
结合用户模块解析的查询词和内容索引生成用户查询结果 , 并对页面进行排序 , 是搜索引擎比较核心的部分 。
接下来 , 我们将粗浅地介绍几个模块的基本内容和技术点 。
将热门站点的优质URL作为种子 , 放到待抓取的URL队列中
读取待抓取URL获取地址进行下载
将下载的网页内容进行解析 , 将网页存储到hbase/hdfs等 , 并提取网页中存在的其他URL
发掘到新的URL进行去重 , 如果是未抓取的则放到抓取队列中
直到待抓取URL队列为空 , 完成本轮抓取
在抓取过程中会有多种遍历策略:深度优先遍历DFS、广度优先遍历BFS、部分PageRank策略、OPIC在线页面重要性计算策略、大站优先策略等 。
网络爬虫需要遵循Robots协议(网络爬虫排除标准) , 这是网络爬虫和站点之间的君子协定 , 站点通过协议告诉网络爬虫哪些可以抓哪些不可以 。


推荐阅读