`
xujinquan19
  • 浏览: 150646 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

中文搜索引擎技术揭密:系统架构

阅读更多

中文搜索引擎技术揭密:系统架构

 

互联网发展的今天,一方面离不开其开放、共享的特性带给人们的全新体验,另一方面也离不开数以亿计的为其提供各类丰富内容的网络节点。互联网被普及前,人们查阅资料第一想到的便是拥有大量书籍资料的图书馆,到了今天你怎么想?或许今天的很多人都会选择一种更方便、快捷、全面、准确的方式——互联网。你可以坐在家里轻点几下鼠标就查到想要的各类信息,这在互联网没有被普及之前,还都仅是一个梦而已,但如今这一切已成为了可能。

  而帮助你通过整个互联网快速查找到目标信息的就是越来越被重视的搜索引擎。有关搜索引擎的技术资料网络上已经很多,关于搜索引擎经济的多方面报道各大媒体也都已经铺天盖地,因此在这里小编并不想过多的谈论这些方面的感受,只想在本次“中文搜索引擎技术揭密”系列文章全部完成之际来聊一下搜索引擎对小编的深远影响。

  记得2000年左右网络上开始大量出现免费个人主页空间,当时的小编还只是一个刚刚进入IT圈的小朋友,看着这些空间那叫一个口水横流,于是乎立刻申请了一个。又经过了一个多月的刻苦修炼和先后三次的改版,自己有生以来的第一个个人主页诞生了。可看着每天寥寥无几的访问量,心里那叫一个难受,可一时间也想不到好办法解决问题。突然有天发现一篇介绍如何在搜索引擎注册自己个人网站的文章,于是小编就照着文章所讲的分别在SOHU、网易等搜索引擎的相关分类目录下注册了自己的个人主页。直至今日,小编才确切的知道了当时盛行的搜索引擎都属“目录搜索引擎”。这实际上是小编第一次使用、认识搜索引擎,再后来通过每天个人主页不断上升的数字小编感觉到了搜索引擎的神奇。

  其实正是由于搜索引擎,才使小编的个人主页被更多的人所熟识,以至于后来有多份工作都是因为这个个人主页所带来的机会。其实这些经历或许很多人都有切身的体会,同样也有很多人因此去全身投入到互联网工作中。这正像那句话讲的“世界真奇妙,不看不知道”,小编在此多加一句“到底怎么看,搜索引擎帮你忙!”

  【e800.com.cn 专稿】互联网在近10年的得到飞速发展,互联网正在逐渐深入人们的生活,改变人们的生活。互联网经济也经历了风风雨雨,从缓慢起步到急速膨胀,从泡沫破灭到逐步回暖;从“网络广告”到“拇指经济”,从“网络游戏”到“搜索力经济”。目前,搜索引擎成为最受人们关注的焦点之一,也成为亿万富翁的制造摇篮。越来越多的公司都希望在搜索引擎这座金矿中挖到筐金子,其中许多人会选择拥有自己的搜索引擎。国内著名搜索引擎公司百度(http://www.baidu.com)总裁李彦宏说:搜索引擎不是人人都能做的领域,进入的门槛比较高。

  搜索引擎的门槛到底有多高?搜索引擎的门槛主要是技术门槛,包括网页数据的快速采集、海量数据的索引和存储、搜索结果的相关性排序、搜索效率的毫秒级要求、分布式处理和负载均衡、自然语言的理解技术等等,这些都是搜索引擎的门槛。对于一个复杂的系统来说,各方面的技术固然重要,但整个系统的架构设计也同样不可忽视,搜索引擎也不例外。

  搜索引擎技术和分类

  搜索引擎的技术基础是全文检索技术,从20世纪60年代,国外对全文检索技术就开始有研究。全文检索通常指文本全文检索,包括信息的存储、组织、表现、查询、存取等各个方面,其核心为文本信息的索引和检索,一般用于企事业单位。随着互联网信息的发展,搜索引擎在全文检索技术上逐渐发展起来,并得到广泛的应用,但搜索引擎还是不同于全文检索。搜索引擎和常规意义上的全文检索主要区别有以下几点:

  1、数据量

  传统全文检索系统面向的是企业本身的数据或者和企业相关的数据,一般索引库规模多在GB级,数据量大的也只有几百万条;但互联网网页搜索需要处理几十亿的网页,搜索引擎的策略都是采用服务器群集和分布式计算技术。

  2、内容相关性

  信息太多,查准和排序就特别重要,Google等搜索引擎采用网页链接分析技术,根据互联网上网页被链接次数作为重要性评判的依据;但全文检索的数据源中相互链接的程度并不高,不能作为判别重要性的依据,只能基于内容的相关性排序。

  3、安全性

  互联网搜索引擎的数据来源都是互联网上公开的信息,而且除了文本正文以外,其它信息都不太重要;但企业全文检索的数据源都是企业内部的信息,有等级、权限等限制,对查询方式也有更严格的要求,因此其数据一般会安全和集中地存放在数据仓库中以保证数据安全和管理的要求。

  4、个性化和智能化

  搜索引擎面向的是互联网访问者,由于其数据量和客户数量的限制,自然语言处理技术、知识检索、知识挖掘等计算密集的智能计算技术很难应用,这也是目前搜索引擎技术努力的方向;而全文检索数据量小,检索需求明确,客户量少,在智能化和个性可走得更远。

  搜索引擎与全文检索除了以上的区别外,还结合互联网信息的特点形成了三个不同的类型:

  全文检索搜索引擎:全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google (http://www.google.com) yahoo(http://search.yahoo.com) AllTheWeb (http://www.alltheweb.com ) 等,国内著名的有百度(http://www.Baidu.com)、中搜(http://www.zhongsou.com)。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,也是目前常规意义上的搜索引擎。

  目录搜索引擎:目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅是按目录分类的网站链接列表而已。用户完全可以不用进行关键词查询,仅靠分类目录也可找到需要的信息。国外比较著名的目录索引搜索引擎有yahoo(http://www.yahoo.com)Open Directory Project(DMOZ)(http://www.dmoz.com/)LookSmart(http://www.looksmart.com)等。国内的搜狐(http://www.sohu.com)、新浪(http://www.sina.com)、网易(http://www.163.com)搜索也都具有这一类功能。

  元搜索引擎:元搜索引擎在接受用户查询请求时,同时在其它多个引擎上进行搜索,并将结果返回给用户。著名的元搜索引擎有Dogpile(http://www.dogpile.com)Vivisimo(http://www.vivisimo.com)等,国内元搜索引擎中具代表性的有搜星搜索引擎(http://www.soseen.com/),优客搜索(http://www.yok.com)。在搜索结果排列方面,有的直接按来源引擎排列搜索结果,如Dogpile,有的则按自定的规则将结果重新排列组合,如Vivisimo

  其他的像新浪(http://search.sina.com.cn)、网易(http://search.163.com)A9(http://www.A9.com)等搜索引擎都是调用其它全文检索搜索引擎,或者在其搜索结果的基础上做了二次开发。

搜索引擎的系统架构

  这里主要针对全文检索搜索引擎的系统架构进行说明,下文中提到的搜索引擎如果没有特殊说明也是指全文检索搜索引擎。搜索引擎的实现原理,可以看作四步:从互联网上抓取网页→建立索引数据库→在索引数据库中搜索→对搜索结果进行处理和排序。  

  1、从互联网上抓取网页

  利用能够从互联网上自动收集网页的网络蜘蛛程序,自动访问互联网,并沿着任何网页中的所有URL爬到其它网页,重复这过程,并把爬过的所有网页收集到服务器中。

  2、建立索引数据库

  由索引系统程序对收集回来的网页进行分析,提取相关网页信息(包括网页所在URL、编码类型、页面内容包含的关键词、关键词位置、生成时间、大小、与其它网页的链接关系等),根据一定的相关度算法进行大量复杂计算,得到每一个网页针对页面内容中及超链中每一个关键词的相关度(或重要性),然后用这些相关信息建立网页索引数据库。

  3、在索引数据库中搜索

  当用户输入关键词搜索后,分解搜索请求,由搜索系统程序从网页索引数据库中找到符合该关键词的所有相关网页。

  4、对搜索结果进行处理排序

  所有相关网页针对该关键词的相关信息在索引库中都有记录,只需综合相关信息和网页级别形成相关度数值,然后进行排序,相关度越高,排名越靠前。最后由页面生成系统将搜索结果的链接地址和页面内容摘要等内容组织起来返回给用户。

  下图是一个典型的搜索引擎系统架构图,搜索引擎的各部分都会相互交错相互依赖。其处理流程按照如下描述:

    “网络蜘蛛”从互联网上抓取网页,把网页送入“网页数据库”,从网页中“提取URL”,把URL送入“URL数据库”,“蜘蛛控制”得到网页的URL,控制“网络蜘蛛”抓取其它网页,反复循环直到把所有的网页抓取完成。

  系统从“网页数据库”中得到文本信息,送入“文本索引”模块建立索引,形成“索引数据库”。同时进行“链接信息提取”,把链接信息(包括锚文本、链接本身等信息)送入“链接数据库”,为“网页评级”提供依据。

  “用户”通过提交查询请求给“查询服务器”,服务器在“索引数据库”中进行相关网页的查找,同时“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,并提取关键词的内容摘要,组织最后的页面返回给“用户”。

  搜索引擎的索引和搜索

  对于网络蜘蛛技术和排序技术请参考作者其它文章[1][2],这里以Google搜索引擎为例主要介绍搜索引擎的数据索引和搜索过程。

  数据的索引分为三个步骤:网页内容的提取、词的识别、标引库的建立。

  互联网上大部分信息都是以HTML格式存在,对于索引来说,只处理文本信息。因此需要把网页中文本内容提取出来,过滤掉一些脚本标示符和一些无用的广告信息,同时记录文本的版面格式信息[1]。词的识别是搜索引擎中非常关键的一部分,通过字典文件对网页内的词进行识别。对于西文信息来说,需要识别词的不同形式,例如:单复数、过去式、组合词、词根等,对于一些亚洲语言(中文、日文、韩文等)需要进行分词处理[3]。识别出网页中的每个词,并分配唯一的wordID号,用于为数据索引中的标引模块服务。

 标引库的建立是数据索引中结构最复杂的一部分。一般需要建立两种标引:文档标引和关键词标引。文档标引分配每个网页一个唯一的docID号,根据docID标引出在这个网页中出现过多少过wordID,每个wordID出现的次数、位置、大小写格式等,形成docID对应wordID的数据列表;关键词标引其实是对文档标引的逆标引,根据wordID标引出这个词出现在那些网页(wordID表示),出现在每个网页的次数、位置、大小写格式等,形成wordID对应docID的列表。

  关于索引数据的详细数据结构,有兴趣的朋友可以参看文献[4]

  搜索的处理过程是对用户的搜索请求进行满足的过程,通过用户输入搜索关键字,搜索服务器对应关键词字典,把搜索关键词转化为wordID,然后在标引库中得到docID列表,对docID列表进行扫描和wordID的匹配,提取满足条件的网页,然后计算网页和关键词的相关度,根据相关度的数值返回前K篇结果(不同的搜索引擎每页的搜索结果数不同)返回给用户。如果用户查看的第二页或者第多少页,重新进行搜索,把排序结果中在第K+12*K的网页组织返回给用户。其处理流程如下图所示:

  搜索引擎细化趋势

  随着搜索引擎市场空间越来越大,搜索引擎也分得越来越细。互联网没有国界,百度总裁李彦宏所讲:搜索引擎市场是赢家通吃的市场。如果一个搜索引擎要想在搜索市场上有自己的一席之地,必须拥有自己的特色。而且,数以亿计的网民,搜索需求不可能都一样,不同类型的用户需要不同类型的搜索引擎,网页搜索只是搜索需求中的一种,这就决定了搜索引擎会不断细化,各具特色的搜索引擎也陆续出现。

  从技术上讲,各种搜索引擎都具有类似的系统架构,其不同在于搜索的数据源的不同。除了上面提到的网页搜索引擎以外,下面列举几个典型的搜索引擎:

  新闻搜索引擎

  看新闻是许多网民上网的主要目的,新闻搜索也就成了查看新闻的重要工具。新闻搜索引擎实现的过程比较简单,一般是扫描国内外有名的新闻网站,抓取新闻网页,建立自己的新闻数据库,然后提供搜索,只是对新闻网页抓取的频率要求很高,有的需要做到几分钟扫描一次。现在许多大型的网页搜索引擎都提供相应的新闻搜索功能,如:Google新闻搜索(http://news.google.com),中搜新闻搜索(http://news.zhongsou.com),百度新闻搜索(http://news.baidu.com)等。

  音乐搜索引擎

  有了互联网以后,音乐得到了广泛的传播,对于喜欢音乐的网民来说,音乐搜索引擎成了最钟爱的工具。音乐搜索引擎需要监控互联网上大型的音乐网站,抓取其音乐数据的描述信息,形成自己的数据库,音乐的下载和试听都会在其原来的音乐网站上进行。目前有:搜刮网(http://www.sougua.com),百度mp3搜索(http://mp3.baidu.com)1234567搜索(http://www.1234567.com)等。

  图像搜索引擎

  通过图像搜索引擎可以找到自己感兴趣的图片链接,各大搜索引擎也提供了图像搜索功能。图像文件本身不能够被搜索引擎索引,但搜索引擎可以通过链接文本分析和图片注解等得到图片的信息。目前有:Google图像搜索(http://images.google.com/)VisionNext搜索(http://www.eefind.com),百度图像搜索(http://images.baidu.com)等。

  商机搜索引擎

  电子商务一直是互联网的热点,商机搜索对电子商务的发展也起到了巨大的推动作用,商机搜索让互联网经济和传统经营紧密结合在一起,给传统的企业提供了一个新的销售模式。商机搜索引擎,通过抓取电子商务网站的商品信息和其他商业信息,给访问者提供统一的搜索平台。目前有:soaso价格搜索引擎(http://www.soaso.com)8848购物搜索(http://www.8848.com),阿里巴巴商机搜索(http://www.alibaba.com)等。

  其他特色的搜索引擎还有专利搜索、软件搜索、ftp搜索、游戏搜索、法律搜索等等,有兴趣的朋友可以参看文献[5]

  更多参考:

  关于搜索引擎系统架构的知识可以参考文献[4][6][7]。以下的文献中有些只列出了文章的标题,大家可以在搜索引擎中输入标题进行搜索,可以直接得到下载链接。

  [1] 中文搜索引擎技术解密:网络蜘蛛。作者:Winter2004

  [2] 中文搜索引擎技术解密:排序技术。作者:Winter2004

  [3] 中文搜索引擎技术解密:分词技术。作者:Winter2004

  [4] The Anatomy of a Large-Scale Hypertextual Web Search Engine. Author: Sergey Brin and Lawrence Page, 1998.

  [5] 搜索引擎目录。作者:搜索引擎指南网。http://www.sowang.com/search.htm

  [6] WiseNut Search Engine white paper. Author: Wisenut Inc. 2001.

  [7] AltaVista white paper. Author: Altavista Inc. 1999

分享到:
评论

相关推荐

    基于Springboot的实验报告系统源码数据库文档.zip

    基于Springboot的实验报告系统源码数据库文档.zip

    ERA5_Climate_Single_Month.txt

    GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载

    基于springboot智能健康饮食系统源码数据库文档.zip

    基于springboot智能健康饮食系统源码数据库文档.zip

    基于SpringBoot的校园服务系统源码数据库文档.zip

    基于SpringBoot的校园服务系统源码数据库文档.zip

    史上最全IXIA测试仪配置使用指导手册(含IxNetwork,图文并茂超详细!).zip

    内容概要: IXIA测试仪的基本配置.doc ixia测试仪基础使用示例.doc IxNetwork如何进行抓包回放-V1.0.pdf IxNetwork如何自定义报文-V2.0.pdf ixia构造ip分片方法.txt IxNetwork使用简介.pdf 适用人群:网络协议造包、打流相关的测试工程技术人员,想要学习的同学可以下载哈 使用场景:构造pcap包,打流 Ixia简介 IXIA使用的是Server-client模式,Server端在测试仪表的主机上,在开机后会随着主机内的操作系统的启动而自动启动,一般情况下不需要人为的手工启动。因此在通常不需要为主机配置专用的显示器和键盘。 client端包括两个测试软件: Ixia Explorer和ScriptMate。这两个软件一般安装在测试用计算机上,在仪表自带的主机中也有这两个软件。根据测试项目的不同来选择使用不同的软件。Ixia Explorer主要提供数据流的测试,针对设备的功能进行测试; ScriptMate提供各种性能测试窗口,针对设备的性能进行测试。 Auto:自动分配;

    基于Python+Django花卉商城系统源码数据库文档.zip

    基于Python+Django花卉商城系统源码数据库文档.zip

    Umi-OCR-main.zip

    Umi-OCR-main.zip

    微信小程序源码-促销抽奖.zip

    基于微信小程序开发的促销抽奖小工具源码,适用于初学者了解小程序开发过程以及简单抽奖工具的实现。

    Sen2_median.txt

    GEE训练教程——Landsat5、8和Sentinel-2、DEM和各2哦想指数下载

    springboot的概要介绍与分析

    以下是一个关于Spring Boot设计的资源描述及项目源码的简要概述: Spring Boot设计资源描述 Spring Boot是一个为基于Spring的应用提供快速开发工具的框架,其设计旨在简化Spring应用的初始搭建和开发过程。以下是一些关键资源: Spring Boot官方文档:详细阐述了Spring Boot的核心特性、自动配置原理、起步依赖、内嵌式服务器等关键概念。这是学习和掌握Spring Boot设计的首选资源。 在线教程与视频:各大在线教育平台提供了丰富的Spring Boot教程和视频课程,从基础入门到高级应用,帮助开发者全面了解和掌握Spring Boot设计。 书籍与电子资料:许多技术书籍和在线电子资料深入讲解了Spring Boot的设计原理、最佳实践和项目案例,为开发者提供了宝贵的学习资源。 项目源码示例 以下是一个简单的Spring Boot项目源码示例,用于演示Spring Boot的基本结构和自动配置功能: java // 引入Spring Boot依赖 @SpringBootApplication public class MySpri

    基于springboot美妆领域管理系统源码数据库文档.zip

    基于springboot美妆领域管理系统源码数据库文档.zip

    tables-3.7.0+gpl-cp37-cp37m-win_amd64.whl

    tables-3.7.0+gpl-cp37-cp37m-win_amd64.whl

    算法实现的概要介绍与分析

    算法是计算机科学的核心,它们在解决各种问题时发挥着关键作用。一个好的算法不仅可以提高程序的效率,还可以简化复杂的问题。下面我将通过一个具体的例子——快速排序算法(Quick Sort)——来展示算法的实现过程,包括资源描述和项目源码。 ### 快速排序算法简介 快速排序是一种高效的排序算法,采用分治法的思想。其基本步骤如下: 1. 从数列中挑出一个元素,称为“基准”(pivot)。 2. 重新排序数列,所有比基准值小的元素放到基准前面,所有比基准值大的元素放到基准后面(相同的数可以到任一边)。在这个分割结束之后,该基准就处于数列的中间位置。这个称为分割(partition)操作。 3. 递归地(recursive)把小于基准值的子数列和大于基准值的子数列排序。 ### 资源描述 快速排序算法因其高效性和简洁性,在实际应用中非常受欢迎。它的时间复杂度平均为 O(n log n),最坏情况下为 O(n^2),但这种情况很少发生。快速排序的空间复杂度为 O(log n),因为它使用了递归来实现。 快速排序的一个典型应用场景是在数据库系统中对大量数据进行排序。由于它的高效性,快速排序

    基于springboot农场投入品运营线上管理系统源码数据库文档.zip

    基于springboot农场投入品运营线上管理系统源码数据库文档.zip

    基于springboot个性化影院推荐系统源码数据库文档.zip

    基于springboot个性化影院推荐系统源码数据库文档.zip

    linux基础进阶笔记

    linux基础进阶笔记,配套视频:https://www.bilibili.com/list/474327672?sid=4493093&spm_id_from=333.999.0.0&desc=1

    微信自动抢红包动态库.zip程序资源学习资料参考

    小程序 微信自动抢红包动态库.zip程序资源学习资料参考

    iOS版微信抢红包插件(支持后台抢红包).zip

    小程序 iOS版微信抢红包插件(支持后台抢红包).zip

    经典-FPGA时序约束教程

    经典-FPGA时序约束教程

    基于springboot的智慧点餐系统源码数据库文档.zip

    基于springboot的智慧点餐系统源码数据库文档.zip

Global site tag (gtag.js) - Google Analytics