搜索引擎的工作原理

搜索引擎的工作原理搜索引擎的基本工作原理包括如下三个过程:首先在互联网中发现、搜集网页信息;同时对信息进行提取和组织建立索引库;再由检索器根据用户输入的查询关键字,在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。1、抓取网页。每个独立的搜索引擎都有自己的网页抓取程序爬虫(spider)。爬虫Spider顺着网页中的超链接,从这个网站爬到另一个网站,通过超链接…

大家好,又见面了,我是你们的朋友全栈君。

搜索引擎的基本工作原理包括如下三个过程:首先在互联网中发现、搜集网页信息;同时对信息进行提取和组织建立索引库;再由检索器根据用户输入的查询关键字,在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并将查询结果返回给用户。

1、抓取网页。每个独立的搜索引擎都有自己的网页抓取程序爬虫(spider)。爬虫Spider顺着网页中的超链接,从这个网站爬到另一个网站,通过超链接分析连续访问抓取更多网页。被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。

2、处理网页。搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引库和索引。其他还包括去除重复网页、分词(中文)、判断网页类型、分析超链接、计算网页的重要度/丰富度等。

3、提供检索服务。用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。

搜索引擎的工作原理

 

在搜索引擎分类部分我们提到过全文搜索引擎从网站提取信息建立网页数据库的概念。搜索引擎的自动信息搜集功能分两种。一种是定期搜索,即每隔一段时间(比如Google一般是28天),搜索引擎主动派出“蜘蛛”程序,对一定IP地址范围内的互联网站进行检索,一旦发现新的网站,它会自动提取网站的信息和网址加入自己的数据库。

另一种是提交网站搜索,即网站拥有者主动向搜索引擎提交网址,它在一定时间内(2天到数月不等)定向向你的网站派出“蜘蛛”程序,扫描你的网站并将有关信息存入数据库,以备用户查询。由于搜索引擎索引规则发生了很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此目前最好的办法是多获得一些外部链接,让搜索引擎有更多机会找到你并自动将你的网站收录。

当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置、频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。

全文搜索引擎相比,目录索引有许多不同之处。

首先,搜索引擎属于自动网站检索,而目录索引则完全依赖手工操作。用户提交网站后,目录编辑人员会亲自浏览你的网站,然后根据一套自定的评判标准甚至编辑人员的主观印象,决定是否接纳你的网站。

其次,搜索引擎收录网站时,只要网站本身没有违反有关的规则,一般都能登录成功。而目录索引对网站的要求则高得多,有时即使登录多次也不一定成功。尤其象Yahoo!这样的超级索引,登录更是困难。

此外,在登录搜索引擎时,我们一般不用考虑网站的分类问题,而登录目录索引时则必须将网站放在一个最合适的目录(Directory)。

最后,搜索引擎中各网站的有关信息都是从用户网页中自动提取的,所以用户的角度看,我们拥有更多的自主权;而目录索引则要求必须手工另外填写网站信息,而且还有各种各样的限制。更有甚者,如果工作人员认为你提交网站的目录、网站信息不合适,他可以随时对其进行调整,当然事先是不会和你商量的。

目录索引,顾名思义就是将网站分门别类地存放在相应的目录中,因此用户在查询信息时,可选择关键词搜索,也可按分类目录逐层查找。如以关键词搜索,返回的结果跟搜索引擎一样,也是根据信息关联程度排列网站,只不过其中人为因素要多一些。如果按分层目录查找,某一目录中网站的排名则是由标题字母的先后顺序决定(也有例外)。

目前,搜索引擎与目录索引有相互融合渗透的趋势。原来一些纯粹的全文搜索引擎现在也提供目录搜索,如Google就借用Open Directory目录提供分类查询。而象 Yahoo! 这些老牌目录索引则通过与Google等搜索引擎合作扩大搜索范围(注),在默认搜索模式下,一些目录类搜索引擎首先返回的是自己目录中匹配的网站,如国内搜狐、新浪、网易等;而另外一些则默认的是网页搜索,如Yahoo。

新竞争力通过对搜索引擎营销的规律深入研究认为:搜索引擎推广是基于网站内容的推广——这就是搜索引擎营销的核心思想。这句话说起来很简单,如果仔细分析会发现,这句话的确包含了搜索引擎推广的一般规律。本文作者在“网站推广策略之内容推广思想漫谈”一文中提出一个观点:“网站内容不仅是大型ICP网站的生命源泉,对于企业网站网络营销的效果同样是至关重要的”。因为网站内容本身也是一种有效的网站推广手段,只是这种推广需要借助于搜索引擎这个信息检索工具,因此网站内容推广策略实际上也就是搜索引擎推广策略的具体应用。

查询处理以及分词技术

随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为技术人员,会把有代表性的搜索引擎作为研究对象。搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。

但是,如何设计一个高效的搜索引擎?我们可以以百度所采取的技术手段来探讨如何设计一个实用的搜索引擎。搜索引擎涉及到许多技术点,比如查询处理,排序算法,页面抓取算法,CACHE机制,ANTI-SPAM等等。这些技术细节,作为商业公司的搜索引擎服务提供商比如百度,GOOGLE等是不会公之于众的。我们可以将现有的搜索引擎看作一个黑盒,通过向黑盒提交输入,并根据黑盒返回的输出大致判断黑盒里面不为人知的技术细节。

查询处理与分词是一个中文搜索引擎必不可少的工作,而百度作为一个典型的中文搜索引擎一直强调其“中文处理”方面具有其它搜索引擎所不具有的关键技术和优势。那么我们就来看看百度到底采用了哪些所谓的核心技术。

我们分两个部分来讲述:查询处理/中文分词

一、查询处理

用户向搜索引擎提交查询,搜索引擎一般在接受到用户查询后要做一些处理,然后在索引数据库里面提取相关的信息。那么百度在接受到用户查询后做了些什么工作呢?

1、假设用户提交了不止一个查询串,比如“信息检索 理论 工具”。那么搜索引擎首先做的是根据分隔符比如空格,标点符号,将查询串分割成若干子查询串,比如上面的查询就会被解析为:三个子字符串;这个道理简单,我们接着往下看。

2、假设提交的查询有重复的内容,搜索引擎怎么处理呢?比如查询“理论工具理论”,百度是将重复的字符串当作只出现过一次,也就是处理成等价的“理论工具”,而GOOGLE显然是没有进行归并,而是将重复查询子串的权重增大进行处理。那么是如何得出这个结论的呢?我们可以将“理论工具”提交给百度,返回341,000篇文档,大致看看第一页的返回内容。

OK。继续,我们提交给GOOGLE查询“理论工具理论”,在看看返回结果,仍然是那么多返回文档,当然这个不能说明太多问题,那看看第一页返回结果的排序,看出来了吗?顺序完全没有变化,而 GOOGLE 则排序有些变动,这说明百度是将重复的查询归并成一个处理的,而且字符串之间的先后出现顺序基本不予考虑(GOOGLE是考虑了这个顺序关系的)。

3、假设提交的中文查询包含英文单词,搜索引擎是怎么处理的?比如查询”电影BT下载”,百度的方法是将中文字符串中的英文当作一个整体保留,并以此为断点将中文切分开,这样上述的查询就切为,不论中间的英文是否一个字典里能查到的单词也好,还是随机的字符也好,都会当作一个整体来对待。至于为什么,你用查询 “电影dfdfdf下载”看看结果就知道了。当然如果查询中包含数字,也是如此办理。

优化核心

1、网站的程序架构要尽量保持简洁,去除花俏的代码,你可以尝试用JS调用。此点甚为重要,搜索引擎优化本身就与用户体验互通互倚,相互结合,况且繁琐的代码不但会影响网站页面的加载速度,还会让用户感觉到压力山大,因此绝不是明智之举。

2、做足站内SEO的细节功夫。从大范围上讲,是要对程序结构进行趋简洁化的修正,而细节来说,就是在URL静态化,title、keyword、description的写法,当然,keyword已经不被搜索引擎投以任何的重视。

3、做足站外SEO的方方面面。包括交换友情链接的注意和做普通外链时候应该如何操作、控制等。切勿想着走捷径,想着群发外链或者一次性购买大量高权重外链等,这些是SEO的错误思维和策略。我们一般推荐大家做一般性传统SEO。

4、每一个SEOer都应该认清楚搜索引擎优化的最根本目的就是为了获得用户,因此用户体验不能够忽视。我们在搜索引擎上获得排名的原因也是因为我们为用户提供了有价值的内容。因此,在发展方向上,无论你是站长还是专业的SEOer,都应该朝着做用户、做产品、做服务的方面去发展,而不应该局限于SEO,此点甚为重要。

SEO优化

网站url

网站创建具有良好描述性、规范、简单的url,有利于用户更方便的记忆和判断网页的内容,也有利于搜索引擎更有效的抓取您的网站。网站设计之初,就应该有合理的url规划。

处理方式:

1.在系统中只使用正常形式url,不让用户接触到非正常形式的url

2.不把session id、统计代码等不必要的内容放在url中。

3.不同形式的url,301永久跳转到正常形式。

4.防止用户输错而启用的备用域名,301永久跳转到主域名。

5.使用robots.txt禁止Baiduspider抓取您不想向用户展现的形式。

title信息

网页的title用于告诉用户和搜索引擎这个网页的主要内容是什么,而且当用户在百度网页搜索中搜索到你的网页时,title会作为最重要的内容显示在摘要中。

搜索引擎在判断一个网页内容权重时,title是主要参考信息之一。

描述建议:

1.首页:网站名称 或者 网站名称_提供服务介绍or产品介绍 。

2.频道页:频道名称_网站名称。

3.文章页:文章title_频道名称_网站名称。

需要注意:

1.标题要主题明确,包含这个网页中最重要的内容。

2.简明精练,不罗列与网页内容不相关的信息。

3.用户浏览通常是从左到右的,重要的内容应该放到title的靠前的位置。

4.使用用户所熟知的语言描述。如果你有中、英文两种网站名称,尽量使用用户熟知的那一种做为标题描述。

meta信息

meta description是meta标签的一部分,位于html代码的<head>区。

meta description是对网页内容的精练概括。如果description描述与网页内容相符,百度会把description当做摘要的选择目标之 一,一个好的description会帮助用户更方便的从搜索结果中判断你的网页内容是否和需求相符。

meta description不是权值计算的参考因素,这个标签存在与否不影响网页权值,只会用做搜索结果摘要的一个选择目标。

推荐做法:

1.网站首页、频道页、产品参数页等没有大段文字可以用做摘要的网页最适合使用description。

2.为每个网页创建不同的description,避免所有网页都使用同样的描述。

3.长度合理,不过长不过短。

图片alt

建议为图片加alt说明。

因为这样做可以在网速较慢图片不能显示时让用户明白图片要传达的信息,也能让搜索引擎了解图片的内容。

同理,使用图片做导航时,也可以使用alt注释,用alt告诉搜索引擎所指向的网页内容是什么。

flash信息

Baiduspider只能读懂文本内容,flash、图片等非文本内容暂时不能处理,放置在flash、图片中的文字,百度无法识别。

所以如果一定要使用flash,建议给object标签添加注释信息。

这些信息会被看作是对Flash的描述信息。让搜索引擎更好的了解您flash的内容。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161155.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • aspnetpager分页控件_如何自动分页

    aspnetpager分页控件_如何自动分页AspNetMvc分页控件,可自定义链接地址,开源分亨给大家先看效果图下载DLL文件,使用大家可进入讨论群160046333,进行讨论 一.如果你使用GET方式传递参数如http://www.CSDN.com/indx?id=1&page=5 调用方式如下:CSS样式:.Dcssa{padding:4px8px;border:1pxsolid#9

  • 编译LAVFilters

    编译LAVFiltersLAV Filters编译全攻略0. Msys mingw安装1. Git安装2. Yasm下载3. Lavfiltes下载4. Ffmpeg下载5. Pkg-config 不用单独用gtk+包包含了很多工具和库用于mingw 【开发环境】直接下载的地址http://xhmikosr.1f0.de/tools/ 且包含了yasm zlib等已经弄好了。-j8也可

  • 环形队列的实现(什么是环形队列)

    环形队列可以使用数组实现,也可以使用循环链表实现。packagewww.bittech;publicclassMyCircularQueue{privateintfront;//队列头privateintrear;//队列尾privateintusedSize;//数据个数privateint[]elem;//数组…

  • autosize px转dp_Android屏幕适配实例教程「今日头条,AutoSize」

    autosize px转dp_Android屏幕适配实例教程「今日头条,AutoSize」Android屏幕适配实例教程即使只是练习项目,仍然要使用屏幕适配,这样我们就可以跟着设计图上的单位参数敲,效率会快很多项目的示范代码使用kt语言,但没有用到什么高级特性,完全不懂的参考这个链接,文章参考代码已经上传到Github,本篇相关的设计图链接戳这里这里提供一个App的UI设计图小白日记,仅供参考前期与UI之间的沟通1)确定设计图基准=可以简单理解为以某个尺寸为基准,然后通过改变对应的比例…

  • CPU后缀字母性能[通俗易懂]

    CPU后缀字母性能[通俗易懂]Intel桌面级CPUK代表此款CPU是不锁倍频的,是可以超频的,用户可以通过超频来提升CPU性能(需要搭配可超频的主板)。X:intel带X的CPU很少,是extreme,也就是代表着“极限“。只有当时intel的旗舰级CPU才有可能带X,代表同一时代性能最强的CPU。C:在Broadwell酷睿的时代,Intel搞出的一个新花样。代表了反CPU性能发展规律:CPU性能退步/最强集显GP…

  • 『贝壳找房APP』反编译到底有多简单–反编译和调试实践

    『贝壳找房APP』反编译到底有多简单–反编译和调试实践

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号