搜索引擎架构

一、搜索引擎简介

信息检索是关于信息的结构、分析、组织、存储、搜索和检索的领域。本文主要描述了搜索系统的中各个组件的名称和功能。

信息检索的应用:带结构的多媒体文档搜索,有意义的文本内容和其他媒体(图片,视频,音频)搜索,垂直搜索(限制在特殊的主题上),企业搜索(在企业内网中寻找)

特殊的搜索

在搜索引擎设计时,应该考虑到数据量和用户量的增长,必须是可定制自适应的,许多功能如排序算法、界面或者索引策略,能够为满足新的应用需要而调整和适应。垃圾信息是指为某种商业利益而制作的文档中,包含的误导的、不合适或不相关的信息。


二、搜索引擎架构

1、文本采集

文本采集组件用于发现文档,并且使这些文档能够被搜索到。通常需要通过爬行或者扫描互联网、企业内网、桌面或者其他信息源,来建立一个文档集和。

文档采集组件还创建一个文档数据库,其中包含所有文档的文本和元数据,元数据是关于一篇文档的信息,如文档类型、结构、长度或者其他特征。

常见组件:

1.爬虫:通过追踪网页上的超链接,来找到并下载页面。

2.信息源:通过检测信息源,来获取信息源更新的内容。

3.转换:将文档或者信息源转化成统一的文本格式和文档的元数据格式。如过程中,控制序列和巨头特殊格式的非内容数据,或删除,或作为元数据进行记录。

4.文档数据库:用于管理大量的文档及这些文档相关的结构化数据。结构化数据包括文档的元数据,及从文档中抽取出来的其他信息,如超链接和锚文本。


2、文本转换


文本转换组件将文档转换为索引项或者特征。

常见组件:

1.解析器:负责处理文档中的文本词素(token),以识别文档中的结构化元素,如标题、图表、超链接和页首文字等等。

2.停用词去除:从索引项的词素序列中删除常用词,如“的”,“和”等等,这些词对文本所涵盖的话题贡献很小,可以大幅度减少索引的整体数量。

3.词干提取(用于英文等外国语言):把同一个词干得到的派生词进行归类,去除词缀得到词根的过程。如“fish”、"fishes"、“fishing”可以归成一类。

4.超链接的抽取和分析:在对文档的解析过程中,识别网页中的超链接和锚文本(网页上可以点击的文本),并记录在文档数据库中。

5.信息抽取:用于识别更加复杂的索引项,如黑体、加粗的词,或者标题中的词,通常需要更多的附加计算,常用的方法有抽取句法特征(命名实体识别器)。

6.分类器:为文档或文档中的部门内容识别出与类别相关的元数据。分类技术给文档分配事先定好的类别标签。聚类技术用于在没有事先定义累的标签的基础上,将相关的文档聚集在一起。


3、索引

索引创建组件利用文本转换组件输出的结果,创建索引或者数据结构。索引项是文档的一部分,存储在索引表中并且勇于搜索。最简单是索引项是一个词,其他索引如短语、人名、日期、超链接等。

索引的创建在时间和空间上都必须是高效的,当增加新的文档到文档集和中,必须能够高效的更新。倒排索引是目前最常见的索引形式(每一个索引项都含有一个列表,列表中包含那些含有该索引项的所有文档)。

索引的更新方式有:索引合并、结果合并。

常见组件:

1.文档统计:汇总和记录词、特征及文档的统计信息。通常包含索引在各文档中出现的次数、位置等。

2.加权:索引项的权值反映了文档中词的相对重要性,并用于排序计算分值。加权组件用文档统计的结果计算权值并存储在查找表中。另一方面,权值的形式是由检索模型来确定的。

3.倒排:将文本转换组件传递过来的“文档-词项”信息流转换为“词项-文档”信息流,以建立倒排索引。

4.索引分派:将索引分发给多台计算机,使索引和查询处理和并行。


4、交互 

用户交互组件提供了搜索用户和搜索引擎之间的接接口,一个功能是接收用户查询并将它转化为索引项另一个功能是从搜索引擎得到一个排序好的文档列表,并将它重新住址成搜索结果显示给用户

用户无法改变搜索系统的工作工作方式,但是可以通过构造查询、浏览结果和重写查询等过长,与搜索系统进行交互。

常见组件:

1.查询输入:为查询Query提供接口和解析器。

2.查询转换:在查询文本上,需要进行词素切分、停用词去除和词干提取,以生成与文档词项具有可比性的索引词。

-拼写检查和查询建议:生成与用户初始查询相似的输出,像用户提供初始查询的一切候选查询。(一般会构建词典,也可以根据查询日志。)

-查询扩展:将用户的初始查询用一个或多个词去扩展,或者替换查询中的一些词,然后将修改后的勋勋建议提交给用户。

-相关反馈:利用用户认为相关的文档中出现的词项,对查询进行扩展。

3.结果输出:对排序好的结果进行展示,常见的任务可能有生成网页摘要、强调文档中重要的词和段落、对结果聚类以找到相关的类别、将相应的广告增加到结果显示中。


5、排序

排序组件从用户交互组件得到转换之后的查询,并根据检索模型生成一个按照分值排好序的文档列表。排序必须是高效的,因为短时间内需要处理大量的用户查询。另一方面排序也必须是高质量的,因为排序的质量决定是否能够找到相关信息。排序的效率依赖于索引技术,而质量依赖于所采用的检索模型。

常见组件:

1.打分机制:在检索模型的基础上,使用排序算法来计算文档的分值,确定文档的排序。

2.性能优化:设计排序算法和索引表的设计,以降低系统的响应时间,提高查询吞吐量。

3.分布式:如查询代理,将网络中多个用户查询分派给不同的处理器,并将各处理器返回的结果整合到一起。


6、评价

评价组件用于评测和检测系统的效果和效率,利用日志来记录和分析用户的行为,评价的结果用来调整和改善排序等组件的形内。评价组件是一种离线行为,但却是不可或缺的一部分。

常见组件:

1.日志分析:查询日志可以用于评析检查、相关查询词推荐、查询缓存等任务。如点击数据和停留时间可以用来评价和调整排序。

2.排序分析:对大量的“查询-文档”对,根据日志数据和相关的判定,可以对排序算法进行评估,并与后弦的算法进行比较。对输出结果的评价引侧重于排序靠前的文档质量,而非整个列表。

3:性能分析:用于检测和改啥系统的整体性能-

-性能评价指标

响应时间:从发出一个查询请求得到检索结果列表志坚的延迟。

查询吞吐量:在一个给定时间内能够处理的查询数量。

索引速度:为文本编排索引以便用于搜索的速度。

-新数据合并到索引中的速度

覆盖率:衡量现存信息有多少被索引和存储在搜索引擎中。

时新性:衡量所存信息的年龄。


参考资料:

《搜索引擎-信息检索实践》 |  W.Bruce Croft   Donald Metzler   Trevor Strohman

你可能感兴趣的:(搜索引擎架构)