搜索引擎的基本原理及数据结构剖析

转载 2007年10月07日 14:42:00

一个搜索引擎程序主要由搜索器(Crawler)、索引器(Indexer).检索器(Searcher)和用户接口(Ul:User Interface)等四个部分组成,主要存储设备由页面存储器(Repository)和存储桶(Barrel)两部分组成。

搜索器(C rawler),本质上是一种计算机爬虫(Spider)程序,它时刻不停地n动,从Internet上不断抓取各种Web网页信息,再将页面原始内容经过压缩处理,存入本地页面存储库中,己备日后处理所用。

索引器( Indexer),程序定期从页面存储库中取出网页原始信息,对其页面内容进行分析和分解,建立以单词为主关键字的索引,并初步进行排序处理,结果存入适当的“存储桶(Barrel)",即硬件存储单元中。

当互联网用户通过用户接口UI提交查询时,检索器(Searcher)程序根据用户输入的查询关键词,在己由索引器(工ndexer)完成索引和初步排序的存储桶(Barrel)中进行查找,并采用特定的页面优先度算法对其结果进行最终排序,使之尽可能符合用户查询需求。最后,用户接口UI将最终查询结果呈现在互联网用户面前。 



搜索引擎程序各组成部分的功能详细介绍如下:  


l.搜索器(Crawler)


搜索器的功能是在互联网中漫游,发现和搜集信息。它常常是一个计算机程序,日夜不停地运行。它要尽可能多、尽可能快地搜集各种类型的新信息,同时因为互联网上的信息更新很快,所以还要定期更新己经搜集过的旧信息,以避免死连接和无效连接。

目前有两种搜集信息的策略:
. 从一个起始URL集合开始,顺着这些URL中的超链(Hyperlink),以宽度优先、深度优先或启发式方式循环地在互联网中发现信息。这些起始URL可以是任意的URL,但常常是一些非常流行、包含很多链接的站点〔如Yahoo!).
. 将 We b空间按照域名、IP地址或国家域名划分,每个搜索器负责一个子空间的穷尽搜索。

搜索器搜集的信息类型多种多样,包括HTML、XML、Newsgroup文章、FTP文件、字处理文档、多媒体信息。

搜索器的实现常常用分布式、并行计算技术,以提高信息发现和更新的速度。

商业搜索引擎的信息发现可以达到每天几百万网页。


2. 索引器(Indexer)


索引器的功能是理解搜索器所搜索的信息,从中抽取出索引项,用于表示文档以及生成文档库的索引表。

索引项有客观索引项和内容索引项两种:

客观项与文档的语意内容无关,如作者名、URL、更新时间、编码、长度、链接流行度(Link Popularity)等等;

内容索引项是用来反映文档内容的,如关键词及其权重、短语、单字等等。内容索引项
可以分为单索引项和多索引项(或称短语索引项)两种。

单索引项对于英文来讲是英语单词,比较容易提取,因为单词之间有天然的分隔符(空格);对于中文等连续书写的语言,必须进行词语的切分。

在搜索引擎中,一般要给单索引项赋与一个权值,以表示该索引项对文档的区分度,同时用来计算查询结果的相关度。使用的方法一般有统计法、信息论法和概率法。短语索引项的提取方法有统计法、概率法和语言学法。

索引表一般使用某种形式的倒排表(InversionL ist),即由索引项查找相应的文档。索引表也可能要记录索引项在文档中出现的位置,以便检索器计算索引项之间的相邻或接近关系(proximity).

索引器可以使用集中式索引算法或分布式索引算法。当数据量很大时,必须实现即时索引(Instant Indexing),否则不能够跟上信息量急剧增加的速度。索引算法对索引器的性能(如大规模峰值查询时的响应速度)有很大的影响。一个搜索引擎的有效性在很大程度上取决于索引的质量.

3.检索器(Searcher)


检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制。

检索器常用的信息检索模型有集合理论模型、代数模型、概率模型和混合模型四种。


4.用户接口(User Interface)


用户 接 口 的作用是输入用户查询、显示查询结果、提供用户相关性反馈机制。
主要的目的是方便用户使用搜索引擎,高效率、多方式地从搜索引擎中得到有效、
及时的信息。用户接口的设计和实现使用人机交互的理论和方法,以充分适应人类
的思维习惯。

用户输入接口可以分为简单接口和复杂接口两种。
简单接口只提供用户输入查询串的文本框:复杂接口可以让用户对查询进行限制,如逻辑运算(与、或、非)、相近关系(相邻、NEAR),域名范围(如.edu,.com),出现位置(如标题、内容)、信息时间、长度等等。

目前一些公司和机构正在考虑制定查询选项的标准.

浅谈搜索引擎工作原理

做为网页开发者,仅仅会编写代码完成业务功能是远远不够的,你做的网站最后需要搜索引擎这个公共入口来呈现给用户。所以搜索引擎优化是及其重要的,而要了解如何优化自己的网站从而适应搜索引擎,我们需要先了解搜索...
  • mevicky
  • mevicky
  • 2015年09月13日 14:23
  • 1899

【搜索引擎】搜索引擎索引数据结构和算法

http://www.cnblogs.com/h-hq/p/5462884.html 最近一直在研究sphinx的工作机制,在[搜索引擎]Sphinx的介绍和原理探索简单地介绍了...
  • zdy0_2004
  • zdy0_2004
  • 2016年05月09日 23:12
  • 976

搜索引擎(网络蜘蛛及搜索引擎基本原理)

2006-05-25网络蜘蛛及搜索引擎基本原理TAG:搜索相关搜索引擎的工作原理大致可以分为:  搜集信息:搜索引擎的信息搜集基本都是自动的。搜索引擎利用称为网络蜘蛛(spider)的自动搜索机器人程...
  • hjl80420
  • hjl80420
  • 2011年03月30日 15:45
  • 277

网络蜘蛛及搜索引擎基本原理

关键词:蜘蛛 搜索引擎 摘要:高性能网络机器人是新一代Web智能搜索引擎的核心,网络机器人是否高效直接影响搜索引擎的效能的发挥。对开发高性能网络机器人所涉及的关键技术和算法进行了详细地分析。最后,给出...
  • dyhrj06
  • dyhrj06
  • 2008年07月31日 16:51
  • 604

2017年最新期高清大数据架构师必备Kafka原理剖析及实战演练附源码讲义

课程介绍: Kafka是流式处理系统如Spark streaming,Strom及Flink事实上的标准数据入口。本课程将分析Kafka的架构,Topic与Partition的关系,Kafka如...
  • yiqizixueba
  • yiqizixueba
  • 2017年11月08日 00:03
  • 72

搜索引擎的基本原理及构成

【说明】:本文转自 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23480159&id=2421718  引言 首先...
  • JXH_123
  • JXH_123
  • 2015年05月14日 20:35
  • 1238

【Java】Java集合框架源码和数据结构简要分析——List

ArrayList和LinkedList源码和数据结构简要分析
  • reliveIT
  • reliveIT
  • 2015年05月20日 21:00
  • 1405

Nginx源码分析:核心模块剖析及常见问题

Nginx 在解析完请求行和请求头之后,一共定义了十一个阶段,分别介绍如下 HTTP 模块工作原理 HTTP 处理的十一个阶段定义 typedef enum {  ...
  • wuli2496
  • wuli2496
  • 2016年02月23日 10:54
  • 675

数据结构系列之基数排序

本文详细介绍了基数排序的原理及实现过程
  • fengyinchao
  • fengyinchao
  • 2015年06月08日 14:41
  • 1399

搜索引擎数据结构

---- 一、引言 ---- 随着Internet的飞速发展,人们越来越依靠网络来查找他们所需要的信息,但是,由于网上的信息源多不胜数,也就是我们经常所说的"Rich Data, Poor Infor...
  • sscsgss
  • sscsgss
  • 2011年06月08日 14:03
  • 731
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:搜索引擎的基本原理及数据结构剖析
举报原因:
原因补充:

(最多只允许输入30个字)