1、搜索引擎的发展过程:
(1)分类目录的一代,导航时代,Yahoo和hao123都是这个时代的代表。通过人工搜集整理,把属于各个类别的高质量网站或网页分类,这种方式扩展性不强,绝大部分网站不能被收录;
(2)文本检索的一代,文本检索的一代采用经典的信息检索模型,如布尔模型、向量空间模型或者概率模型,来计算用户查询关键词和网页文本内容的相关程度。早期很多搜索引擎都采用这种模式;
(3)链接分析的一代,这一代搜索引擎利用了网页之间的链接关系,并深入挖掘和利用了网页链接所代表的含义。通常而言,网页链接代表了一种推荐关系,所以通过链接分析可以在海量内容中找出重要的网页。被推荐次数多的网页其实代表了其具有流行性,搜索引擎通过结合网页流行性和内容相似性来改善搜索质量。Google于1998年成立,它率先提出并使用PageRank链接分析技术,大幅度提高了搜索质量。目前几乎所有的搜索引擎都采取了链接分析技术,但是这种技术并未考虑用户的个性化要求,所以只要输入的查询请求相同,所有用户都会获得相同的搜索结果。另外很多网站为获取更高的搜索排名,针对链接分析算法提出不少链接作弊方案,这样导致搜索结果质量变差。
(4)用户中心的一代,第三代即理解用户需求为核心的一代搜索引擎,千人千面。目前搜索引擎大都致力于解决如何能够理解用户发出的查询词背后包含的真正需求的问题。目前的搜索引擎做了很多技术方面的尝试,如利用用户发送查询词时的时间和地理位置信息、利用用户过去发出的查询词及相应的点击记录等历史信息手段,来试图理解用户此时此地的真正需求。
2、搜索引擎3个目标
更全 | 更快 | 更准 | |
---|---|---|---|
索引 | ✓ | ||
索引压缩 | ✓ | ||
排序 | ✓ | ||
链接分析 | ✓ | ||
反作弊 | ✓ | ||
用户研究 | ✓ | ||
云存储 | ✓ | ✓ | |
爬虫 | ✓ | ✓ | |
网页去重 | ✓ | ✓ | |
缓存 | ✓ |
- 搜索查询的平均长度是2.7个单词;
- 搜索引擎本质上是一个匹配的过程;
3、搜索引擎的技术架构
互联网
网络爬虫(将网络信息获取到本地)
网页去重
反作弊—云存储和云计算平台(倒排索引— 内容相似性;链接关系—链接分析)
网页排序
cache系统
查询分析(用户)
4、搜索引擎如何处理搜索请求
(1)搜索引擎收到查询词;
(2)对查询词进行分析(结合查询词和用户信息来推导用户对真正意图);
(3)先在缓存中进行查找,搜索引擎的缓存系统中存储了不同查询意图对应的查询结果;
(4)如果缓存功能无法满足要求,就需要调用“网页排序”模块(网页排序的两个最重要的参考依据:内容相似性和网页重要性)
5、通用爬虫框架
(1)精心挑选部分互联网页面作为种子URL,将种子URL放入待抓取URL队列中;
(2)爬虫从待抓取的URL队列中依次进行抓取,将URL通过DNS进行解析,把链接地址转化为网站服务器对应的IP地址;
(3)然后将IP地址和网页相对路径交给网页下载器,对于已经下载下来的网页一方面将其储存到网页库中,等待建立索引后进行后续处理;
(4)另一方面将已经下载到网页的URL放入到已抓取URL中,防止重复抓取;
6、爬虫的3种基本类型
- batch crawler批量爬虫:有明确的抓取范围和抓取目标,当爬虫达到抓取的目标后即停止抓取;(batch 批量)
- incremental crawler增量爬虫:会持续不断的搜索、更新,商业搜索引擎使用 的基本上都是这个类型的爬虫;(incremental 增量的)
- focused crawler垂直爬虫:针对垂直行业,在爬取阶段就要对内容进行识别;
7、抓取策略
(1)宽度遍历优先策略(Breath First):遇到新的链接就加到待抓取列表后面;
(2)非完全PageRank策略(Partial PageRank):PageRank是个全局算法,所有页面都下载完成后,其计算结果才是可靠的;非完全对意思是新下载的页面攒够n个,就重新计算一遍新的pagerank;
(3)OCIP策略(Online Page Importance Computation):在线页面重要性计算,已经下载的页面会将自己的现金cash清空,平分到链接页面,接下来下载现金最多的页面;
(4)大站优先策略(Larger Sites First)
8、网页更新策略
(1)历史参考策略:历史频繁更新的网页将来也会频繁的更新,可以根据曾经更新周期的情况,决定将来抓取的周期;
(2)用户体验策略:用户关注度高的更新频率较高;
(3)聚类抽样策略:先对网页进行分类,再在不同的类别中选出有代表性的网页,根据这些网页的更新周期决定整个聚类的爬取周期;
9、暗网抓取
- 暗网爬虫为了能够挖掘数据库的内容,必须模拟人的行为,填写内容并填写表单;
- 对于暗网爬虫来说,技术难点有2个:一是查询的组合太多,如果一一遍历会给目标网站造成太大的压力,如何精心组合查询条目是个挑战;二是查询的文本框,爬虫要怎样才能恰到好处的填入适当的内容;
- 查询组合问题:富含信息查询模版(Informative Query Templates):如果根据不同维度的查询模版得到的查询结果,如果相差较大,则这个查询模版就是富含信息查询模版;
- 文本框填写问题:人工为网站提供一些初始的查询词汇,再从查询结果中提取出新的关键词,将这些词汇作为搜索词语再次输入到搜索框中进行下次查询,最终直到再也无法得到新的查询词汇。通过这种人工启发结合递归迭代的方式,尽可能的覆盖数据库里的记录;
10、分布式爬虫
- 主从式分布爬虫(Master-Slave)
- 对等式分布爬虫(Peer to Peer)