搜索引擎的那些事(开篇)

来源:互联网 发布:www.web pro seo.com 编辑:程序博客网 时间:2024/05/01 23:18

     说起搜索引擎,大家肯定都不陌生。至少对于我来说,每日百度的次数不下几十次。在信息的查询和搜索方面,百度帮了我很大的忙,当然这中间也有很多搜索结果我也不是很满意。那么不知道大家有没有兴趣知道搜索引擎是怎么做出来的?其实说简单也简单,说复杂也复杂。

    大家知道,网络搜索结果都是按照网页来进行查找的。一般来说,如果网页中包含了这个关键字,那么这个网页就是我们需要的。但是,事实上结果不都是这样的。大家知道,互联网上的网页非常多,想要在不到1秒钟的时间内就寻找到自己需要到那个结果基本上来说是不可能的。别的不说,把这互联网上几十亿个网页下载下来就不是一件容易的事情,更不要说后面的查找和遍历了。所以说,搜索引擎所查找的任何结果都是计算机预处理的结果,有了这个基本概念之后后面的讲解就比较容易了。

    要做一个简单的搜索引擎其实不是件复杂的事情。关键步骤可以分成三个部分,即网页的遍历和下载、中文分词和解析、查询结果和排序。

(1) 网页下载和遍历

    要有自己的搜索引擎,要有自己的数据,这个数据就是网页的数量。说到这里,我们就不得不说网页的一个重要特性,那就是超链接。有了超链接,我们就可以继续爬行到别的网页了。说到这里,有几个问题需要考虑,这个网页该怎么爬行,是首先按照宽度进行遍历呢,还是按照广度进行遍历呢,如何判断哪些网页是已经遍历过了的,哪些网页尚没有遍历,如果利用多线程对网页进行遍历呢?

(2)中文分词和倒排文件

    有了自己的网页,这只是一个基本条件。下面,我们就需要对网页的数据进行拆解,对网页中的每一个句子进行拆解。这就是所谓的中文分词。当然,中文分词可以有很多的方法,基本上说按照字典来拆解就可以了,要么从左向右进行拆解,要么从右向左进行拆解,或者按照最小词组数目进行拆解也可以。当然,网页的数目是在不断递增的,但是一般来说一个语言的词组的数目是一定的,一般来说汉语的词组也就在几十万个左右。其他语言呢,比如说英语,因为英语是由一个一个单词组成的,按照牛津词典的标准,单词的最大数目也就在几十万个单词上下。所以,在此我们设计了倒排文件的格式。用最简单的话说,我们不再关注一个网页包含了哪些词语,我们更关注某个词语在哪些网页中出现了,这就是倒排文件的基本思路。

(3)索引查找和排序

    有了倒排文件之后,我们就可以把这些索引结果用数据库进行保存起来的。因此,大家注意我们搜索的任何结果都是从这份数据库合并过来的。当然,查到了这些结果之后,我们怎么判断哪些排序结果应该排在前面,哪些结果应该排在后面。说到这里,一个不得不提的算法就是pagerank,这个算法的基本思想就是大家都想要的结果就是你想要的结果,某个网页重要是因为别人引用它的次数比较多。打个通俗的比方来说,一个被大家多次引用的论文质量肯定差不到哪去。当然,还有其他影响排序的因素,比如字频、网页日期、网站权重、是否为客户购买的关键字、是否为作弊网页、是否为标题文字等等。

原创粉丝点击