搜索引擎的概念
搜索引擎是一应用于web上的软件系统。该系统基于用户输入的查询关键字,在web上搜索、过滤相关信息,经整理后反馈给用户。整个过程所实现的最终效果是:搜索引擎通过对web的检索、过滤和整理,实现了面向用户需求的信息聚合。
搜索引擎按服务方式不同所进行的分类及各自特点
搜索引擎按服务方式的不同可分为目录式搜索引擎、全文搜索引擎和元搜索引擎三种。其中,目录式搜索引擎基于站点导航进行分类浏览,可看作网站的黄页查询。而我们所说的一般意义上的搜索引擎——全文搜索引擎,由下载系统、分析系统、索引系统和查询系统四部分组成,各部分各伺其职,实现了面向网页的全文检索。元搜索引擎没有自己的数据,它将用户查询需求同时提交给多个搜索引擎,然后将所有的查询结果按自己的算法进行筛选、整理后反馈给查询用户,它也是一种面向网页的全文检索。
搜索引擎的主要需求( 性能衡量指标)
互联网对搜索引擎的需求主要体现为查得快、查得全、查得准和查得稳四个方面。其中,“快”应快到秒级以下(商用搜索引擎到毫秒级),而影响快的主要因素有索引库的效率、分布查询的处理能力以及查询缓存的命中率几个方面;而“全”,则体现为查全率,反映的是搜索引擎能根据用户输入的关键字于web中打捞信息的能力,捞的越多,查全率越高;“准”自然是最重要的,因为用户往往关心的只是查出所有结果的前几条。“准”用查准率来衡量,即查出的相关文档总数与查出所有文档总数的比率。影响查准率的主要因素是网页排序算法(PageRank);而“稳”则指搜索引擎运行的稳定性,涉及文件的存储方式、查询系统和索引系统的设计几大方面。
搜索引擎体系结构概览
在搜索引擎的体系机构中,一个搜索引擎主要由下载系统、分析系统、索引系统和查询系统组成。下载系统负责web网页的爬取,并对其实施跟踪下载;分析系统负责对获取到的网页进行PageRank和中文分词工作;索引系统则主要负责网页的索引入库;查询系统是用户与搜索引擎进行交互的窗口,用于用户提交查询请求和为用户返回查询结果。
搜索引擎的下载系统
下载系统的主要任务就是对web网页进行爬取和跟踪下载。爬取任务由爬虫来执行,而在如此浩瀚、结构也相当复杂的互联网上快速爬取到所需要的网页需设计一科学、高效的爬取策略。根据互联网所呈现出的“蝴蝶结型”结构,对web的爬取主要采用宽度优先策略,种子站点选择目录型网页,更容易深入到位居蝴蝶结中右部的、反向连接较多的权威性网页,利于提高抓取效率和抓取准确率。此外,纵向上适当控制抓取深度(通常选用万维网的深度17),从而避免大量无效劳动和搜索资源的浪费。再者,抓取应考虑到万维网的实时更新问题,爬虫抓取应与互联网的更新保持同步。还有就是,要尽量避免重复抓取,并保证重要的网页优先被抓。避免重复抓取的有效方法就是记录历史,爬虫记录历史通过哈希表来实现,主要算法有bitmap和Bloom Filter算法,哈希函数通常借助于MD5。而网页的重要性取决于链接受欢迎度、链接重要度和平均链接深度三个因素。爬虫应保证重要度较高的网页优先被抓。最后,爬虫对web网页的抓取应严格遵守各被抓站点的Robot协议。
实际应用中,多采用多爬虫多调度的体系结构实现多爬虫并行抓取,以提升抓取效率,调度模块负责将抓取任务通过网页或者域名进行分解,使某个爬虫仅抓取某个域名段的网页。此外,网页库的存储访问方式也是影响抓取速度的一大关键,网页库的设计应尽量保证其可伸缩性、双访问模式及大规模更新的特点。
搜索引擎的分析系统
分析系统在搜索引擎的架构中承担了网页结构化、网页消重、文本分词以及PageRank计算4项基本任务。
为了更好地分析和理解下载系统所捕获的网页信息,分析系统首先会根据HTML文档半结构化的特点对其进行结构化分析,以使标签与内容相分离,并识别出有用的正文信息。网页结构化过程首先通过标签树进行分析得到文本对应的标签,然后通过投票算法确定正文及配图等仅从HTML标签无法判断出的网页数据。
经过网页结构化分析后,分析系统提炼出了网页的正文文本内容,而对于所捕获到的所有网页而言,重复是在所难免的。因此,分析系统的第二项任务就是查重、消重。查重通过特征抽取来实现。常用的有I-match算法和Shingle算法。消重遵循“保留先抓网页、消除后抓网页”的原则。
经过了网页的结构化和消重后,便可对内容进行分析和处理了。首先是要进行中文分词,即将正文文本中的各个句子切割成一个个小的词汇单元。中文分词可通过字典或统计学方法实现分词。常用的基于字典的分词方法有:正向最大匹配、逆向最大匹配和N-Gram方法;而基于统计学的方法立意于探索那些经常一起出现的词,多用于新词的发现。
分析系统还有一项非常重要的工作就是对下载系统所有捕获到的网页进行打分排序,以使与用户查询相关性最大的网页优先排在查询结果的最前面。常用PageRank算法对网页进行打分,其基本思想是对网页进行链接分析。链接分析的主要依据是:(1)认可度越高的网页越重要,即反向链接越多的网页越重要;(2)反向链接的源网页质量越高,被其指向的网页也越重要;(3)链接越少的网页越重要。
搜索引擎的索引系统
索引系统则主要负责网页的索引入库。现今搜索引擎对信息检索采用全文检索来实现,而全文检索通过关键词来检索,因此按照关键词创建倒排索引便成为索引系统的首要工作。倒排索引是一种以关键词和文档编号结合,并以关键词为主键的索引结构。倒排索引分为两部分:(1)由索引词组成的索引表,称为词典,其中保存了各种中文词汇以及这些词汇的一些统计信息;(2)由每个索引词出现过的文档集合,以及命中位置等信息组成的记录表。其中文档集合中的各个文档以文档编号唯一表示,其值为由URL经MD5变换所得到的一个整型值,而文档集合就是包含索引词的所有文档所组成的序列。为了节省存储空间,该序列通常借助Variable Byte Coding方法来压缩表示。
在倒排文件的创建过程中主要涉及以下内容: (1) 正排表与倒排表的合并:正排表与倒排表的合并过程就是将正排表中的数据追加到倒排表的过程,此处追加可逐条追加,也可将一个正排表(含多个DocId)通过对索引词的排序一次性或分批写入倒排表中。 (2) 多个临时倒排文件的归并:采用拉链法和二路归并(或多路归并)来实现。 (3) 倒排索引的分布式存储:有两种解决方案:局部方案是索引接点按DocId的不同将倒排文件分布在不同的索引节点上;而全局方案则按索引词的顺序将倒排文件分布在不同的索引节点上。一般认为局部方案稍佳。
搜索引擎的查询系统
查询系统是用户与搜索引擎进行交互的窗口,用于用户提交查询请求和为用户返回查询结果。查询系统对信息的检索主要采用将布尔模型与向量模型相结合的方式,布尔模型主要用于过滤出符合输入查询条件的文档列表;向量模型用于判断该文档列表所对应的文档向量与关键词向量的相似性。其中,向量模型中关键词权重的量化采用经典的TF/IDF方法来计算。而相似度则利用文档向量与关键词向量的夹角大小(余弦值)来判断,夹角小的(相关性大)排在前面。在利用布尔模型进行文档列表的输出时,涉及多文档列表的求交问题,通常采用按文档长短由短到长依次归并的方法来实现。而对利用向量模型所求出的相关文档则采用堆排序对文档进行排序,并按照相关度由小到大的顺序进行输出。查询系统的输出内容包括与查询相关的网页链接和与查询相关的自动摘要两大部分。其中,自动摘要的提取联合采用滑动窗口方法和投票算法来实现。
查询系统应尽量提高自身的效率和效果。效率即速度,主要通过引入搜索结果页缓存机制来实现。而效果主要指准确性,通过推测用户查询意图来实现。
总结
整体而言,可将搜索引擎体系统结构的四大部分分成两大块:分别是由下载系统、分析系统与索引系统组成的离线部分,和仅由查询系统自身组成的在线部分。离线部分承担了数据制作的工作,而在线部分则提供数据服务工作。为了使查询系统能为用户提供优质高效的数据查询服务。离线部分在日常的工作中需要做大量的工作,首先是由下载系统对网页进行及时而又全面的抓取,将网页下载到网页库。然后,再由分析系统对其进行网页结构化、消重以及中文分词和PR值的计算等工作。随后,索引系统将根据分析系统中文分词的结果以及经网页结构化所淅沥出来的正文文本内容,建立体现关键词与文档对应关系的倒排索引。索引系统的建立主要是为查询系统的高效运行提供强有力的支持。当用户在查询系统所提供的查询入口输入搜索关键词后,查询系统就会将查询关键字与索引系统中的检索关键词相对照,并查处出与该关键词相关的所有相关文档的内容。进而利用向量模型计算相关度,最后根据堆排序算法对这些文档按照相关度由大到小的顺序进行输出。
|
搜索引擎概述
最新推荐文章于 2021-12-19 22:14:33 发布