ued赫塔菲官方 1

搜索引擎指的是蜘蛛程序沿着链接爬行和抓取网上的大量网页内容,存入数据库,经过复杂的算法进行预处理,建立网站索引目录,当用户在搜索框输入关键字之后,搜索引擎通过相关性的排序算法从索引库中找到最符合用户需求的页面按照一定权重展示给用户的过程。蜘蛛爬行、页面收录及排序都是自动处理的。

搜索引擎系统是最复杂的计算系统之一,当今主流搜索引擎服务商都是有财力、人力、技术的大公司。即使有技术、人力、财力的保证,搜索引擎还是面临很多技术挑战。搜索引擎诞生后的十多年中,技术已经得到了长足的进步。 我们今天看到的搜索结果质量与10年前相比已经好得多了。不过这还只是一个开始,搜索引擎必然还会有更多创新,提供更多、更准确的内容。

搜索引擎面临的问题或瓶颈

1、用户搜索内容时必须反应快而准确。在天量的互联网网页世界里面,每天有无数的页面被创建、更新、删除、要返回最有用及最新的内容是一个巨大而繁琐的挑战,搜索引擎蜘蛛更新一次数据库中的页面需要花费很长的时间。因此为了提升用户体验,保证搜索质量,搜索引擎从网站权重、是否官方认证、历史快照、搜索频次等几个方面做了预处理,因此无论多么优秀的网站被搜索引擎收录及展现在搜索结果中都需要一段时间的蜘蛛爬行过程。

2、海量的数据存储。除了天量网页需要蜘蛛爬行之外,网站的结构也是需要蜘蛛记忆的,复杂冗余、逻辑缠绕的网站逻辑会降低蜘蛛的爬行效率,以及蜘蛛在数据库建立索引等过程,引擎蜘蛛通过权重的分配、信任外链、网站目录提交等方案,提高引擎蜘蛛的收录效率。因此如果网站在很长一段时间内都没有被搜索引擎收录,需要seoer检查是否因为网站内链逻辑是否过于复杂,导致蜘蛛爬行过程漫长。

3、索引处理快速有效,具有高度扩展性。在引擎蜘蛛抓取和存储后,要做复杂的算法筛选过滤,提取关键词计算相关性,然后进行树状存储,但是网站会随时进行更新,索引数据也需要响应这些更新,并重新计算相关性和索引,因此对引擎服务器的性能提出了更高的挑战。

4、判断用户意图及人工智能。前面几个可以通过一定的算法和硬件的发展进行有效解决,智能识别用户意图还处在机器学习阶段,这也是搜索引擎公司未来的发展方向,在大数据和区块链技术的不断完善下,搜索引擎会更懂你,那么如果网站更懂搜索引擎,间接的也会更懂用户!

此文纯理论知识,很不错的搜索引擎的资料。

总体来说,搜索引擎主要面对以下几方面的挑战。

ued赫塔菲官方只是网址会每一日开展更新,以后主流寻觅引擎都已经能在几天之内更新首要页面。搜索结果展示

搜索结果页面主体有两部分,一部分是广告,另一部分是自然搜索结果。广告及推广部分一般在页面的右边和前几个搜索结果里,并且会在结果的末尾注明“广告”或者“赞助商链接”。一般情况下右侧广告最多有8个,上部广告最多有3个。

搜索广告在网络营销行业经常被称为PPC,由广告主针对某些关键词进行竞价,通过点击数进行付费,具有精准营销的思维。受到大多数公司的欢迎。

SEOer最关心是自然搜索结果。统计数据显示,自然搜索结果总点击访问量远大于广告点击数,因此seo对于一个企业的网络营销效果有不可忽视的作用。

搜索引擎会根据权重对站点的展现形式做一些调整,让用户可以直达目标页,也为网站导入了巨大的流量资源,一般有标题摘要、缩略图标题摘要、二级页面缩进列表、全站链接、迷你全站链接、独立面板One-box、富摘要、面包屑导航等。

搜索引擎的定义
ued赫塔菲官方 2搜索引擎是传统IR技术在Web环境中的应用。一般来说,搜索引擎是一种用于帮助用户在Internet上查询信息的搜索工具,它以一定的策略在Internet中搜索,发现信息,对信息进行理解,提取,组织和处理,并为用户提供检索服务,从而起到信息导航的目的。

1.页面抓取需要快而全面

搜索引擎工作原理

搜索引擎的工作原理非常复杂,大体上可以分为三个阶段:爬行和抓取、预处理、排名。

搜索引擎的体系结构
ued赫塔菲官方 3典型的搜索引擎结构一般由以下三个模块组成:信息采集模块(Crawler),索引模块(Indexer),查询模块(Searcher)。

ued赫塔菲官方 ,互联网是一个动态的内容网络,每天有无数页面被更新、创建,无数用户在网站上发布内容、沟通联系。要返回最有用的内容,搜索引擎就要抓取最新的页面。但是由于页面数量巨大,搜索引擎蜘蛛更新一次数据库中的页面要花很长时间。 搜索引擎刚诞生时,这个抓取、更新周期往往以月为单位计算。 这也就是Google在2003年以前每个月有一次大更新的原因所在。

爬行和抓取

引擎蜘蛛通过跟踪链接访问网页,获得页面HTML代码存入数据库。

搜索引擎用来爬行和访问页面的程序被称为蜘蛛(spider),也称为机器人(bot)。

搜索引擎模拟用户直接通过网站地址Get网站信息,得到信息后将代码存入原始页数据库,为了提高爬行数据和效率,会同时使用多个蜘蛛进行分布式爬行。

在访问站点是会首先嗅探该站点根目录下有没有robots.txt文件。读取该文件,蜘蛛根据该文件的协议访问整个站点,如果没有此文件,蜘蛛默认访问整个站点。

搜索引擎会标注自己的访问身份,可以再后台的日志找到搜索引擎的爬行痕迹。

搜索引擎一般会采取两种策略去爬行整个站点:1. 深度优先; 2. 广度优先;通常情况下是混合使用者两种策略,可以照顾到不同类型的站点。

理论上蜘蛛可以爬行所有的页面,但是实际上蜘蛛爬行会自己的边界和规则,seoer的主要职责是适应蜘蛛爬行规则,让蜘蛛尽可能多的收录自己的站点信息。

为了避免重复爬行和抓取网址,搜索引擎会建立一个地址库,记录以及被发现还没有被抓取的页面,以及以及被抓取的页面。地址库中的URL的来源一般有这样几种情况:

1、人工录入的种子站点。

2、通过爬行解析出来的网站外链,与地址库中的数据进行比对,如果地址库没有则是新的网址。

3、站长通过搜索引擎网页提交表格提交进来的网址。

Crawler:从web中采集网页数据
Indexer:对Crawler采集数据进行分析生成索引。
Searcher:接受查询请求,通过一定的查询算法获取查询结果,返回给用户。

现在主流搜索引擎都已经能在几天之内更新重要页面,权重高的网站上的新文件几小时甚至几分钟之内就会被收录。不过,这种快速收录和更新也只能局限于高权重网站。很多页面几个月不被重新抓取和更新,也是常见的。

预处理

索引程序对抓取来的页面数据进行文字提取、中文分词、网站层级分析、索引建立等处理。

Get到网站内容后,蜘蛛会完成下面几件事:

1、提取关键字,通过解析代码,找到内容块,进行分类分权重存储。

2、中文分词,分词是中文搜索特有的步骤。搜索引擎存储和处理页面及用户搜索都是以词为基础进行的,英文天然以空格进行分割,这样才能有效的进行意义识别。中文分词一般有两种方法:基础词典库匹配和统计数据匹配。

3、去停止词,无论是英文还是中文,页面里面会出现一些频率很高但是对内容意义没有任何影响的词,如‘的’、‘地’之类的,英文里如‘the’、‘a’、‘an’等词语。这些词语对用户的意义识别没有任何帮助,剔除之后也会降低服务器的检索压力。

4、消除噪音,有些内容对网站的常规内容,对网站的产品或主题没有任何贡献,比如版权声明文字、导航条、广告等需要对这部分内容进行剔除。

5、去重,进行分词操作后,有些意义相近的词语会在站点内反复出现,但是他们代表同样的意义,所以需要对这些词语进行归类去重。

6、正向索引,经过文字层层过滤后搜索引擎得到独特的、能反映页面主体内容、以词为单位的内容集合,按照词频提取关键字并配权重存储在数据库,按照页面的层级顺序进行建立的关键字索引库就是正向索引。

7、倒排索引,通过关键词对出现关键词的文件进行排练组合,形成文件索引列表,这叫做倒排索引,可以用于用户搜索。

8、链接关系计算,这是预处理很重要的一环。现在所有的主流搜索引擎排名因素中都包含网页之间的链流动信息,通过这些链信息进行权重计算,Google PR值就是这种关系价值的一种体现。

9、特殊文件处理,对于除html文件外的文件类型,引擎蜘蛛现在没没有办法识别,所以都会剔除掉。

-->Crawler
Crawler 负责页面信息的采集,工作实现基于以下思想:既然所有网页都可能链接到其他网站,那么从一个网站开始,跟踪所有网页上的所有链接,就有可能检索整个互联 网。Crawler首先从待访问URL队列中获取URLs,根据URL从中抓取网页数据,然后对网页进行分析,从中获取所有的URL链接,并把它们放到待 访问的URL队列中,同时将已访问URL移至已访问的URL队列中。不断重复上面的过程。
Crawler存在以下的关键问题:
>多线程抓取时的任务调度问题:
搜索引擎会产生多个Crawler同时对网页进行抓取,这里需要一个好的分布式算法,使得既不重复抓取网页,又不漏掉重要的站点。
>网页评估
在抓取网页时存在一定的取舍,一般只会抓20%左右的网页。评估算法中典型的油Google发明的Pgaerank。
>更新策略
每经过一段时间,Crawler对以抓取的数据经行更新,保证索引网页是最新的。
>压缩算法
网页抓取后,通过一定的压缩机制保存到本地,从而减少存储容量,同时也减少各服务器之间的网络通信开销

要返回最好的结果,搜索引擎也必须抓取尽量全面的页面,这就需要解决很多技术问题。 一些网站并不利于搜索引擎蜘蛛爬行和抓取,诸如网站链接结构的缺陷、大量使用Flash,JavaScript 脚本,或者把内容放在用户必须登录以后才能访问的部分,都增大了搜索引擎抓取内容的难度。

排名

用户输入关键字之后,排名程序会计算相关性,获取关键字矩阵,然后通过索引获取站点信息,按照一定的格式生成搜索结果页。

排名的过程是和用户互动的过程,引擎智能会根据历史搜索和当前搜索进行联想匹配得到一个最佳搜索结果呈现给用户。

1、搜索词处理,对搜索词进行处理①中文分词②去停止词③指令处理④拼写错误纠正⑤整合搜索触发。

2、文件匹配,经过处理后,搜索引擎得到一些关键词集合,通过索引找到包含关键词的文件,并计算相关性进行排序。

3、初始子集选择,因为搜索结果是巨量的文件,通常搜索结果页面只展示前100个,百度会返回将近1000条记录,依靠权重找到最多1000条文件记录,作为筛选初始子集。

4、相关性计算,计算相关性是排名过程中最重要的一步,也是seoer优化的重点范围。①关键词常用程度,利用历史搜索算出关键词的热度。②词频和密度,一般认为文件中没有关键词堆砌的情况下关键词出现的频率越高说明相关性也越高。③关键词位置和形式,是否出现在页面权重比较高的位置,比如title、H1、strong等,也是前端需要优化的重点范畴。④关键词距离,分词计算后的关键词完整匹配出现,说明最相关,其次是分词之后两个词的距离。⑤链接分析及页面权重,除了页面本身的因素外,页面的外链也影响重大,外链权重高,关键词价值越高,页面有越多以搜索词为锚文字的导入链接,说明页面的相关性越强。

5、排名过滤及调整,经过相关性计算,大体排名已经被确定,之后搜索引擎可能还要进行一些过滤算法,对排名进行轻微的调整,其中最主要的是对作弊站点施加惩罚。

6、排名显示,排名确定后,排名程序会调用原始页面的标题标签、说明标签、快照日期等数据显示在页面上,有时也需要动态生成页面摘要。

7、搜索缓存,用户的关键词往往在一段时间内是重复的,按照二八定律,长尾理论,最常见的搜索词没有占到80%那么多,但是通常也有比较粗大的头部,为了提高搜索效率,引擎会将热词进行缓存,当用户搜索时可以直接从缓存数据中取出,不必再次进行相关性计算,大大提高了搜索效率。

8、查询及点击日志,用户的搜索行为都会形成日志进行记录,这些日志对于搜索结果的质量起了重要的作用,引擎会自动计算相关权重,并在下一次搜索里影响排名,所以好的网站是持续流量的基石。

-->Indexer
搜索引擎在完成用户的检索请求时,并不是即时的检索Web数据,而是从预先采集的网页数据中获取。要实现对采集页面的快速访问,必须通过某种检索机制来完成。
页面数据可以用一系列关键字来表示,从检索毙敌来说,这些关键词描述了页面的内容,只要找到页面,便可以找到其中的关键词,反过来,通过关键词对页面创建索引,便可以根据关键字快速的找到相应的网页。

2.海量数据存储

链接在搜索中的算法原理

基于一个假设:好的网站很少会链接到坏的网站,反之则不成立,很多垃圾网站会链接到高权威、高信任指数的网站,试图提高自己的信任指数。用现代的话说就是信用背书,利用信用背书可以提高自己网站的权重值,获得较好的排名。在排序算法中比重越来越高,seoer应该重视外链在站点内的布局,及自己的站点被外链引用的频率。

Indexer中存在的问题:
>索引存储:
一般来讲,数据量和索引量的比例接近1:1。索引的存储一般采用分布式策略,检索的数据分布在不同的服务器上。Google存储索引的服务器大概有1000多台。
>索引更新:
页面数据更新时,索引数据必须相应的更新。更新策略一般采用增量索引方式。
>索引压缩:
索引也存在数据压缩的问题。索引压缩是通过对具体索引格式的研究实现压缩。
>网页相似性支持:
索引的结构还必须为网页相似性分析提供支持。
>多语言,多格式支持:
网页数据具有多种编码格式,通过Unicode,索引支持多种编码查询。同时索引还必须有对Word,Excel等文件格式进行分析的功能。

一些大型网站单是一个网站就有百万、千万,甚至上亿页面,可以想象网上所有网站的页面加起来是一个什么数据量。 搜索引擎蜘蛛抓取页面后,还必须有效存储这些数据,数据结构必须合理,具备极高的扩展性,写入及访问速度要求也很高。

高级搜索指令

1、把搜索词放在双引号里面,代表完全匹配不进行分词操作,连顺序也必须完全匹配。百度和Google都支持这个指令。eg: "和平是我的梦想"

2、减号,减号(-)代表搜索不包含减号后面词语的内容,使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟需要排除的词。Google和百度都支持这个指令。

3、星号,星号(*)是常用的通配符,也可以用在搜索中。百度不支持星号匹配。

4、inurl,用于搜索查询词出现在url中的页面。百度和Google都支持inurl指令。

5、inanchor, 指令返回的结果是导入链接文字中包含搜索词的页面。百度不支持。

6、intitle, 指令返回的页面中title标签包含的关键词页面。百度和Google和百度都支持该指令。

7、allintitle, 返回页面title标签同时包含多个关键字的结果页面,eg: allintitle:SEO 建站大全

8、allinurl, 返回地址中同时包含多个关键词的结果页面, eg:allinurl admin login。

9、filetype,该指令用于搜索特点格式的文件,Google和百度都支持,eg:filetype:doc 辣子鸡丁,百度目前只支持pdf、doc、xls、ppt、rtf、all等格式,而Google则支持所有能索引的文件格式,包括html、php等。

10、site,这个指令是seoer最熟悉的高级搜索指令了,用来搜索某个域名下的所有文件,这个指令是查询网站收录页面最有效直接的方法。不过site:指令并不准确,尤其是Google中,返回的收录页面经常有大的波动,只能作为参考。

11、link,利用这个指令可以搜索某个url的反向链接,既可以包括内部链接,也可以包括外部链接。

-->Searcher
Searcher是直接与用户进行交互的模块,在接口上有多种实现的方式,常见的主要是Web方式。
Searcher通过某种接口方式,接受用户查询,对查询进行分词(stemming)处理,获取查询关键字。通过Indexer获取与查询关键字匹配的网页数据,经过排序后返回给用户。
Searcher中的问题:
>检索结果的排序:
对不同的用户采用不同的排序策略。
>排序结果排重:
排重可以提高结果数据的质量。
>检索结果的相似性分析:
主要用在类似网页功能中,需要在索引结构中提供支持。
>检索的速度:
主要依赖索引结构的设计。同时在体系结构上还有很多技术可以用来提升速度。如:Cache,负载均衡等。

除了页面数据,搜索引擎还需要存储页面之间的链接关系及大量历史数据,这样的数据量是用户无法想象的。估计百度有三四十万台以上服务器,Google有几十个数据中心,上百万台服务器。 这样大规模的数据存储和访问必然存在很多技术挑战。

相关核心技术:

我们经常在搜索结果中看到,排名会没有明显原因地上下波动,甚至可能刷新一下页面,就看到不同的排名,有的时候网站数据也可能丢失。 这些都可能与大规模数据存储、同步的技术难题有关。

ued赫塔菲官方 4 分布式技术:
当 搜索引擎处理数据达到一定规模时,为了提高系统的性能,必须采用分布式技术。Crawler通过多个服务器互相合作,提高数据采集的速度。Indexer 在生成索引数据时通过并行算法,在不同机器上同时进行。Searcher也可以在不同的机器上进行同时查询,提高速度。
ued赫塔菲官方 5中文分词:
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。现有分词算法可以分为三大类:基于字符串比配的的分词方法,基于理解的分词方法和基于统计的分词方法。
ued赫塔菲官方 6网页排序:
现在搜索引擎中网页的 排序主要利用了页面间的链接关系,描述链接的文本以及文本自身内容,重要的链接分析算法有Hits和Pagerank,HillTop等。
ued赫塔菲官方 7海量数据存储:
搜索引擎的挑战之一就是处理数据的巨大,如何存储如此大的数据,数据的更新,快速的检索...
ued赫塔菲官方 8压缩技术:
压 缩技术极大的减少了数据的大小,对于不同类型的数据,需要采用不同的压缩方法,主要的数据压缩主要有:网页数据的压缩和索引数据的压缩。选择压缩技术主要 从开放性,速度与压缩比等多方面进行综合考虑。Google中选择了Alib(RFC1950)进行压缩,在压缩速度上Zlib超过Bzip,压缩比上 Bzip好于Zlib。

3.索引处理快速有效,具可扩展性

    文章作者:高维鹏(Brian)
    文章出处:

搜索引擎将页面数据抓取和存储后,还要进行索引处理,包括链接关系的计算、正向索引、倒排索引等。 由于数据库中页面数量大,进行PR之类的迭代计算也是耗时费力的。 要想提供相关又及时的搜索结果,仅仅抓取没有用,还必须进行大量索引计算。由于随时都有新数据、新页面加入,因此索引处理也要具备很好的扩展性。

4.查询处理快速准确查询是普通用户唯一能看到的搜索引擎工作步骤。 用户在搜索框输入查询词,单击“搜索”按钮后,通常不到一秒就会看到搜索结果。表面最简单的过程,实际上涉及非常复杂的后台处理。 在最后的查询阶段,最重要的难题是怎样在不到一秒的时间内,快速从几十万、几百万,甚至几千万包含搜索词的页面中,找到最合理、最相关的1000个页面,并且按照相关性,权威性排列。

5.判断用户意图及人工智能

应该说前4个挑战现在的搜索引擎都已经能够比较好地解决, 但判断用户意图还处在初级阶段。 不同用户搜索相同的查询词,很可能是在寻找不同的东西。 比如搜索“苹果”,用户到底是想了解苹果这个水果,还是苹果电脑?还是电影《苹果》的信息?也可能想听听《小苹果》?没有上下文,没有对用户个人搜索习惯的了解,就完全无从判断。

搜索引擎目前正在致力于基于对用户搜索习惯的了解、 历史数据的积累,以及语义搜索技术的基础上,判断搜索意图,理解文档真实意义, 返回更相关的结果。 今后搜索引擎是否能达到人工智能水平,真正了解用户查询的意义和目的,让我们拭目以待。