搜索引擎原理的实现

本文主要探讨如何实现类似baidu和google的搜索引擎,这里指的是全文检索搜索引擎,也就是通常所说的搜索引擎,用于查找网络上的所有资源,而搜索引擎事实上共分3种,另外两种分别是:目录搜索引擎、元搜索引擎。对于这两种本文不做讨论。目前占领搜索引擎这个领域主要有baidu、google。

        搜索引擎是一项很复杂的技术,尤其是中文搜索引擎,由于其庞大的类库和复杂的词、成语等组字方式更为复杂。这些搜索引擎的工作原理,都是通过从互联网提取各个网站的信息,如普通网页、歌曲名称等,然后建立自己的搜索数据库(估计google的数据库是自己写的对全文检索优化过的分布式数据库,当然这个数据库绝对没有你想的那么简单,goolgle采用分布式文件系统,比数据库更接近底层,介于数据库和操作系统之间,并且该数据库应该是google自己开发的,不太可能是使用orcal,因为要实现太多并发。),再从建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序(他们自定义的)将结果返回给用户,这是目前最常用的搜索技术。

搜索引擎涉及到的原理:

        讲到搜索引擎就不得不讲到网络蜘蛛程序(网络机器人),它是一个自动程序,可自动在互联网上搜索信息。从其他网页内提取信息,就是利用网络蜘蛛程序,自动访问网络,并查看页面内容,然后从中找到相关信息,最后再从该页面的所有链接出发,继续寻找相关的信息。网络蜘蛛不停的重复这个过程,并把爬过的所有网页收集到搜索引擎所在的服务器中。此过程一般采用的是广度优先算法(可以看看数据结构方面的书)。下面简单讲讲网络蜘蛛收集到信息后,接下来要做什么:

1、建立自己的索引数据库。网络蜘蛛存储网页后,再由自定义的程序,对服务器中保存的网页进行分析,提取相关网页的URL、编码类型、关键词位置、生成时间、大小、与其他网页的链接关系等,根据网站自定义的相关度算法进行运算,最后得到相关度信息,然后用这些相关信息建立网页索引数据库。

2、在索引数据库中搜索关键内容。当用户输入搜索内容,单击搜索按钮后,系统自定义程序开始根据相关技术,分析用户的搜索内容,然后从网页索引数据库中,找到包含用户搜索内容的所有相关网页。

3、对搜索结果进行排序处理。在网站自己的索引库中,对网页的每个关键词都有记载,根据关键词的搜索次数以及在网页中出现的次数等分析要素,对搜索到的结果进行排序,当然还可以自己定义排序处理程序。最后将处理好的结果展现出来。

下面简单的说下搜索过程涉及到的技术:

1、中文分词。英文是以词为单位的,词与词之间上靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am Chinese,翻译成“我是中国人”。计算机可以很简单的通过空格知道Chinese是一个单词,但是不能很明白“中”、“国”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词。现有的分词算法有3种:基于字符串匹配的分词算法、基于理解的分词算法和基于统计的分词算法。

2、排序技术。类似于曝光率,谁出现的次数最多,谁排在前面。在互联网上,链接就相当于“曝光”,在B网页中链接了A,相当于在谈话中提到了A,如果在C、D、E、F中都链接了A,那么说明A网页是最重要的,A便会排在最前面。另外还有HillTop算法等。

3、网络蜘蛛。网络蜘蛛即Web Spider,是一种很形象的网页搜索技术。把互联网比喻成一个蜘蛛网,那么Spider就是网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其他链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。

在抓取网页的时候,网络蜘蛛一般有两种算法:广度优先和深度优先。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有的网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。这是最常用的方式,因为这个方法可以让网络蜘蛛并行处理,提高其抓取速度。深度优先是指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这个方法有个优点是网络蜘蛛在设计的时候比较容易。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值