浅学搜索引擎

Posted PM大锅饭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅学搜索引擎相关的知识,希望对你有一定的参考价值。


什么是搜索引擎


baidu一下,你就得到,我就不频繁搬运知识卡片啦~



爬取&抓取


搜索引擎蜘蛛沿着互联网络爬行并抓取其爬行的页面,将这些抓取的页面存储起来。为了抓取尽量多的页面,搜索引擎会跟踪页面上的链接,从一个页面爬行到下一个页面,好像蜘蛛在蜘蛛网上爬行那样,这就是搜索引擎蜘蛛这个名称的由来;


搜索引擎在跟踪网络上的链接时,会使用一定策略,因为现在的网络链接太多。最简单的爬行遍历策略有两种——深度优先、广度优先(深度优先和广度优先的区别?分别适用于哪种业务?);



索引


我们无法让用户在页面等待时间过长,但是搜索排序、索引等逻辑运行又需要很多时间,所以要尽可能把产品内部逻辑走通,在预处理的时候就把要找的内容从内容池里召回出来:


去重:对于内容相似度高的,搜索引擎不喜欢,因为用户不喜欢这样的内容。而且,搜索引擎的去重算法很可能不止于页面级别,而是进行到段落级别。因此,混合不同文章、交叉调换段落顺序也不能使转载和抄袭变成原创;


正向索引:搜索引擎将页面及关键词形成词表结构存储进索引库。简化的索引词表形式如下。你看,这样就得到了每个文件(如每个页面)的对应关键词;


倒排索引:正向索引虽然提供了文件与关键词的对应关系,但无奈用户搜索的是关键词,因此搜索引擎还需根据这些对应关系找到某关键词对应的文件,这样的计算量无法满足实时返回排名结果的要求,倒排索引与正向索引刚好相反;


链接关系计算:每个页面上都有链接,不同页面之间用链接互相关联起来,这些关联关系,就形成了其他页面对某个页面的评价。这些复杂的链接指向关系形成了网站和页面的链接权重(索引完之后每个页面并不是都可用的,所以需要paperank);



排序


排名,是用户是用户唯一能感觉到的步骤,爬行与抓取、预处理,都在后台完成;


排名的过程也比较复杂,其中值得一提的有如下几点:


搜索词处理:说白了,就是处理用户输入的关键词。这一步对用户来说更为关键,因为搜索引擎还不够智能,需要我们去学习一些高级指令,以获得更为精准的内容;


但由于每个关键词对应的文件数量都可能是巨大的(如几亿个),处理如此庞大的数据量,无法满足用户对「快」的需求。同时,用户并不需要所有内容,他们往往只查看前几页内容,甚至很多用户只查看第一页的前几条内容。因此,选择一定数量的内容进行处理,很有必要,这就涉及到选择初识子集;


选择初识子集:选择初识子集,关键在于「权重」。所以说权重有多重要,即使页面做得好,但权重不高,连做备胎的机会都没有;


相关性计算:这是排名过程中最重要的一步,最终搜索结果页面的排名基本按照相关性从高到低排序;


排名过滤及调整:为了保证用户搜索结果更符合用户需求,搜索引擎需要过滤掉那些处心积虑钻空子的页面,在这一步,搜索引擎会找出这些页面并施加惩罚。典型的例子是百度的11位;


查询及点击日志:通过这一步,搜索引擎记录了用户的一些数据,从而为后续的优化提供依据。这和产品日常工作中的数据埋点有些相似。


PM大锅饭 发起了一个读者讨论 你觉得搜索引擎未来的优化空间在哪里?


PM大锅饭


可爱的你,能帮忙分享、在看、点赞一下嘛~

以上是关于浅学搜索引擎的主要内容,如果未能解决你的问题,请参考以下文章

Spark SQL 浅学笔记1

JVM:永久区浅学

线程池浅学

浅学soap--------2

JS浅学

Spark SQL 浅学笔记2