搜索引擎的设计思路(cgreen原创)

来源:互联网 发布:手机淘宝旺旺生成器 编辑:程序博客网 时间:2024/05/02 01:30

搜索引擎,最主要的是搜索速度,像百度、GOOGLE等大的搜索引擎,在上1000G可能上10000G的数据中怎样能得到想要的结果呢。
====================================================
冰雪儿个人作品主页 「www.yooice.com」
Copyright 2001-2004 yooice.com all rights reserved 版权声明:本站除收
藏栏目外均为冰雪儿原创作品,未经本人同意,请勿转载 ...
www.yooice.com/ 11K 2004-9-30 - 百度快照
www.yooice.com 上的更多结果


www.kombispace.com [ Kombi个人作品网站 ]
...,,,CD .........www.kombispace.com [ Kombi个人作品网站 ]www.kombispace
.com [ Kombi个人作品网站 ] ...VOL. 04 [ 2004/06/14 ] 注释:除注明外,
本站发表的作品版权归[ Kombi ]所有.未经许可不得转载...
www.kombispace.com/ 20K 2004-8-3 - 百度快照
www.kombispace.com 上的更多结果


大鸭梨
...的高中同学 二十不惑(小说连载) 钟情红色(爱情小说) 北京杂感集(杂文
) 小桃荒诞集(杂文) 小桃藏头诗集 书法艺术年表 原创书法笑话 书法临作欣
赏 创作作品欣赏 入展作品欣赏 VI形象标志设计作品 网站...
www.dayali.com/ 22K 2004-9-30 - 百度快照



==============================================================
这里平均每一条记录大概有300个字符。10条记录一页显示的话,有3000个字符
也就是将近2K多的字符量。


我们在查“电脑”关键词时,出现的记录数为:6,490,000篇,我们来算一下,会有多少字节
6490000*2K=12G多。其实也不是很大。这看起来是乎很大。但是我要考虑实际的情况,实际情况
和现实并不一样。
1。我们每次只能请求得到一个网页,也就是每次的实际数据流量只有2K左右,这对于我们对于2K数据作什么
操作都不会过多的影响速度


2。我们访问者把100页看完的人不过超过1/100000,也就是100后一年可能只有10个点击的可能。1000后可能就根本
没人点过。也就是说事实上我们没有必要去做这1000后的页或是100后的页。象百度的最大的页码就是76,根本没有100页。也就是加起的来的字符量就只有76*2K=152K这相对来就数据量是很少的。


3。我们来看看第条记录的数据结构。
----------------------------------------
大鸭梨
...的高中同学 二十不惑(小说连载) 钟情红色(爱情小说) 北京杂感集(杂文
) 小桃荒诞集(杂文) 小桃藏头诗集 书法艺术年表 原创书法笑话 书法临作欣
赏 创作作品欣赏 入展作品欣赏 VI形象标志设计作品 网站...
www.dayali.com/ 22K 2004-9-30 - 百度快照
---------------------------------------------
这里有(标题)(内容)(下面有网址)(多少K)(时间)(标题的超链接)(百度快照)(百度快超链接)
一共只有8项。这意味着在数据库中我们只有这8项就可以了,但是有时为了实现一些管理和特另功能可能要多
几项。但是也不会超过很多。


4。我们在向服务发送请求时只有一页给我们,一页的速度大概到我们能显示出来要5秒左右,当然包括IE的解
释时间。只要一个数据到本地的时间不超过10秒这些都是可以接受的。我们在点其它的页时,两页的差时大概
都在10秒以上,这样我们在这10秒钟服务器可以做很多事的。


5。每次我们看到的页面是以5页增加的,这就是意味着,你在看第一页时,不可能在下一次点11页,因为只显示
10页。服务器可以在第一次查找时,他没必要把第11次查出来,只是把前面查出就可以了。



通过上面的说明,我们来分析一下可能的采用的技术和方法:


我们在打一个关键词“人类与自然”时提交页面给服务器。得到的结果如下。
====================================================================
第二章 人类与自然界的协调发展
[注意]第二章 人类与自然界的协调发展 【字体:小 大】 第二章 人类与自然
界的协调发展 第二章 人类与自然界的协调发展 作者:佚名 教研来源:本站原
创 点击数: 更新时间:2004-6-15 第二章 人类与自然界的...
www.bdjks.cn/xkjy/chuzhong/shengwu/200406/918.html 51K 2004-6-15 - 百度快照
www.bdjks.cn 上的更多结果


再次思索人类与自然的关系
选定您喜欢的背景颜色: 再次思索人类与自然的关系 2004年02月06日 10:14
深圳新闻网 2003年11月爆发...程度,从而重新产生对自然应有的敬畏,思索
人类与自然的关系,实现自然、人类与心灵的和谐。 作为人类...
www.sznews.com/n1/ca759490.htm 36K 2004-2-6 - 百度快照
www.sznews.com 上的更多结果


人类与自然和谐
人类与自然和谐,富裕与文明共存 竹子画像 曾经是“天苍苍,野茫茫,风吹草
低现牛羊”,如今却是“树木枯裂,河流断绝,生命杳无”。 高原的精灵——藏
羚羊:你别无选择 生态忧思录 竹子手册 纵化大浪中,不喜...
www.wjsgjzx.com.cn/person/shenqingqing/2.htm 14K 2002-9-23 - 百度快照



人类与自然是相关密切的,请不要破坏他
人类与自然是相关密切的,请不要破坏他 由 <liushuhua>于13:58:02 8/27/2
003发表 ,回复张玉强发表的...。 相关文章-[张玉强]☆626字节☆10:26:33
5/11/2003☆(4) 人类与自然是相关密切的,请不要破坏他-[...
www.xmems.org.cn/cgi-bin/bbs4.pl?read=804 2K 2004-8-27 - 百度快照
www.xmems.org.cn 上的更多结果


人类与自然环境_生态旅行_非常旅行_远飞教室_北京...
...旅行 什么是生态旅游 生态旅行装备知识 森林生态旅游慨说 国际生态旅
游市场分析 人类与自然环境 绵延起伏的山 形形色色的湖 源远流长的河 人
类与自然环境 自然环境是人类生存、繁衍的物质基础;保护和...
www.yuanfeiniao.com.cn/class/lvxing/st/st05.htm 10K 2004-2-27 - 百度快照



==========================================================================
从上面看得出,服务器对于词组的分解的情况并不多,这种分解可能有以下几种情况


1。用数据库本身的模糊查找。数据的结构由下。
ID :1234
title : 人类与自然是相关密切的,请不要破坏他
context :...旅行 什么是生态旅游 生态旅行装备知识 森林生态旅游慨说 国际生态旅
         游市场分析 人类与自然环境 绵延起伏的山 形形色色的湖 源远流长的河 人
         类与自然环境 自然环境是人类生存、繁衍的物质基础;保护和...
titleurl : www.boosit.cn
url : www.boosit.cn
date : 2004-8-27
上面要显示的内容有这几项就可以了。


   我们会发现,我们在这些内容中复制任意一段都可以查到本内容。说明它不可能全用其中的字符
作为关键字的,但是也可以把常用的词组作为关键字,如“电脑” “计算机” “手机”等,对于
这一类的关键字,我们可以在后台把他处理好,全部放在一起。如果考存储空间的问题,我们可以只
做一个表用来记录关键字和相关内容的ID号。在读取时依据ID号来进行读取,当然如果能把这些关键字
包括内容都放在一起的话当然会提高查询速度,有人会问,汉语的词组这么多,这样查不是很慢吗,
实事我们常用的也就是使用频率很高的词组并不多,大家用过的所有词组加起来,1天有100次的就只有
几千个,对于关键字的查询,我们可以作为一个单独的查询。


那么查询过来的字我们要变颜色怎么办了,特别对于那些分解的单词。其实我们可以用分单的单词进行
替换,如“电脑教程”我分解出了“电脑”和“教程”我们先替换“电脑”,再替换“电脑教程”或先替
换“电脑”然后替换“教程”
  
  对于词组分解,我们用几个词组去测试它:
   1) “审计算机教程序”结果查出来的有“审计”“算机” “程序”三个关键词。而没有“计算机”或
        “计算机教程”或“教程”之类的。
    2)“天计算机教程序”结果查出来的只有“计算机”“程序”两个关键词  


这里我们可能有点不明白,关键字是怎么样分解的。这点来说有两个方法可以办到,一个是做一个词组字
典,我查了一下资料,其实常用的汉字词组只有1000多个。比如,我们想知道"审计算机教程序"有几个词组
只要把这1000多个词组和 “审计算机教程序”比较一下就成了。如果包含就提出来作为关键字。但是对于
搜索引擎,他们可以在长期的查找中自己定义出更适合自己的词组。如:我查了一个“电脑”,“计算机”
等,搜索引擎就会把它记录进去,在一段时间的统计中取得使用率很高的词组作为自已的词组。


================================================================================
2。服务器得到要查的词组怎么办呢?
   我们可以想到这么多数据服务器要查多久啊,这种是我的算法和后台数据库的结构问题了。对于我们要在
100G的数据库中采用通常的查找如:SELECT * FROM HELLO WHERE TITLE=“LOVEYOU”这样可以要几十分钟,
有可能更长,怎么办呢。我们想到以下几种办法:
   1)我没有对数据的查找速度做过测试,这里我们采用估计。
      我们可以把100G的数据放到10计算机中去。前台用一台服务器作为中间件执行服务器来调动后台的
      查询操作以及返回数据处理工作。
    2)前台中间件服务器得到一个“LOVE”的关键字查询经过配比后得到词组关键字,中间此时会向10
    台服务发出查询的命令,查询的关键字都为“LOVE”每台数据库服务器得到要查的命令后,对“LOVE”
   相关的进行查询。
   3)在数据方面我们为了查询速度更快,除了减少查询数据的大小外,我们还要做一些处理,如,我们每
   一个表最多只存100M的数据或更少(对于实际上是多少得依据测试),每个表按一定的规律进行命名
   数据库服务器此时可以开启20个或更多的进程进行查找,第一个只查1-20的表,第二个只查21-41的表。
   后面的进程向后推。其它几台服务器也同样如此。
   4)我们还可以把一个关键字的所有内容的ID记录下来,在表中只存这些ID号,对于查询的操作就由管理
   员通过程序进行,这在后台进行,可能要花几天的时间,但是这时间不影响我们查找的速度,因为对于
   查找的结果,服务器后台程序为我们做好了。
   5)我们还看到BAIDU最多只有76页,我们完全可以在二天,三天,6天的时间来生成所有关键字的76页数据
   也就是说我把我字库里的词组都查好,生成新的相当于静态页面等你来查。比如把“机器”所有内容按
   时间找出来,可能要好长时间,这个根我们没关系,反正不是我们的事。然后就在其中取出前面的76页,
   也就是760项生成一个新表。每周更新一次。
   6)我们在向IE返回数据时,可以先把从数据库中最先得到的结果先返回客户端。没必要等全找完了才传给
     客户端。
  
   很显然,对于有关键字的内容,我们最多只有76项,如果没有关键字的那么搜出来的内容根本没有76页。


这里会有一些技术上的问题和难点。
  1)怎么样处理数据库查找返回的数据,因为存在多个进程和多个返回的记录集,对于把所有结果生产新表
和暂存表的话,这个问题不存在。对于行进上面第5点讲的76项方法,也不存在这个问题。
  2)后台是怎么排先后顺序的
  3)后台是怎么得到信息并收集的
  4)后能是怎么样处理收集的信息的。
对于这些问题我们会在下一部继续分析。

原创粉丝点击