一、软件架构
软件架构通常包括软件组件、组件提供的接口以及各组件之间的联系。
-
UIMA 非结构化信息管理架构
这是一个软件架构的实例,用于提供一个将搜索和相关语言技术整合在一起的标准。它为组件定义了接口,使系统在增加处理文本和其他非结构化数据的技术的时候,变得更加简单。
-
架构的设计用于保证系统能够满足应用需求或目标。搜索引擎的两个主要目标:
-
效果(质量)
-
效率(速度)
-
二、搜索引擎的基本构件
搜索引擎主要功能:
-
索引处理(建立可查找的数据结构)
-
文本采集
-
发现文档,比如爬虫;
-
创建文档数据库,记录文档类型、结构等特征信息。
-
-
文本转换
-
将文档转换为索引项或者特征
-
索引项
-
是文档的一部分,存储在索引表中用于搜索。比如文档中一个词。
-
特征
-
更多应用在机器学习中,是文档的一部分,用于表达文档内容,也可以是索引项。如日期、网页中的超链接等。
-
索引创建
-
利用文本转换组件的输出结果,创建索引或数据结构。要求在时间和空间上都是高效的。
-
查询处理
-
用户交互
-
接收用户的查询并将它转换为索引项
-
从搜索引擎得到一个排好序的文档列表
-
-
排序
-
排序组件是搜索引擎系统的核心,必须是高效的。
-
评价
-
用于评测和检测系统的效率和效果,作为调整和改善排序组件的性能。
-
在线:记录用户和系统的日志数据,分析用户的行为
-
离线(主要)
-
三、组件及其功能
(1)文本采集
1. 爬虫
网络爬虫通过追踪网页上的超链接来找到并下载新的页面- site search
基于一个站点,站内搜索
- focused/topical爬虫
采用分类技术限制所访问的网页是关于同一个主题的。适用于垂直搜索和话题搜索系统,如医学信息网站。
- 企业搜索
- 公司内部和外部的页面(通过网页超链接获取)
- 扫描公司和个人的目录,如桌面搜索
2. 信息源
文档信息源(document feed)是一种存取实时文档流的机制。
- 爬虫——发现新的文档
- 阅读器(如RSS)——通过监测信息源,抓取新的文档
3. 转换
将抓取到的文档转换成统一的文本格式和文档的元数据格式。在进一步深入处理之前,保证不同语言的文档使用统一的编码方案进行了转换。
4. 文档数据库
管理大量的文档以及与这些文档相关的结构化数据。
(2)文本转换
1. 解析器
解析组件负责处理文档中的文本词素(tokens)序列,以识别文档中的结构化元素,如标题、图表、超链接和页首文字等等。
- 词素切分(tokenzing)
- 文档结构通常由HTML、XML等标记语言来指定
2. 停用词去除
从成为索引项的词素序列中删除常用词,如“的”
3.词干提取
把同一个词干(stem)得到的派生词进行归类,如“fish”和“fishes”
4.超链接的抽取和分析
- 抽取:从文档中抽取超链接和锚文本
- 分析:分析页面的重要程度,如pagerank算法
5.信息抽取
用于识别更加复杂的索引项,比如公司名称、日期等等。
6.分类器
(3)索引的创建
1. 文档统计
- 文档统计组件
汇总和记录词、特征及文档的统计信息。
- 排序组件
使用上述信息计算文档的分值。
2. 加权
赋予索引项权值,权值的形式由检索模型来确定。
3. 倒排
将文本转换组件传过来的文档—词项信息,转换为词项—文档信息,以便建立倒排索引。
4. 索引分派
(4)用户交互
1. 查询输入
查询输入组件为查询语言提供接口和解析器。
2. 查询转换
用于在生成排好序的文档之前和之后,改善初始查询。如拼写检查和查询建议。
3. 结果输出
展示排好序的文档,包括生成网页摘要、强调文档中重要的词和段落、对文档聚类(如新闻)。
(5)排序
-
打分机制
-
性能优化
-
分布式
(6)评价
-
日志
-
排序分析
-
性能分析