搜索引擎技术之整体架构设计
2009-06-10 12:50
176 查看
我们先看一下一个搜索引擎的大体设计图
:
这里面我们看到了输入部分
,
索引部分
,
存储部分
,
还有搜索部分
,
简单的说拥有这些部件你的产品就可以叫做一个索引引擎了
,MS
使用的桌面搜索服务
(Index service)
也是这几部分组成的
,
那么我们接下来一步一步分析这几部分
:
1.
Source
作为输入部分
,
为一个指定的文件目录
,
先要具备全目录扫描
,
这时要看我们是否设定了文件
Filter,
很多时候我们只需要把
PDF,HTML
等有用的文件去做索引
,
索引设定
Filter
还是可以提供更好的性能和准确度
,
这里我们创建一个
Document
模块负责文件目录的管理
,
该模块要具备文件系统扫描
,
文件类型过虑
,
还要能将扫描得到的有用文件路径存储到内存中为以后打开这些文件做索引做准备
,
这里我使用了一个
vector
做的文件路径存储
.
2.
Analysis
模块负责对文件内容进行解析
,
不同的文件调用不同的解析器
,
这里的文件就是由上面的
vector
提供的
,
这里设计一定要为将来其他用户使用拓展文件类型提供接口
,
否则你的设计就太不
Flexible,
可以考虑诸如
Façade
的设计模式开发
.
我在这里抽象了一个虚基类
:
class CFileParserBase
{
public:
CFileParserBase(void);
~CFileParserBase(void);
virtual int parseWord(IN char * read_buf, CString FileName) = 0;
virtual char * getContent(CString FileName) = 0;
};
其它类需要去重载文件解析和文件内容获取两个基本函数
.
3.
将解析的关键字建立反向索引
,
这里我使用的是数据库
,
因为好的
Database
会在你查询时提供优化
,
速度也就会更快一些
,
性能对于搜索引擎来说是最重要的
.
这一部分的实现我下篇文章详细说
:
:
这里面我们看到了输入部分
,
索引部分
,
存储部分
,
还有搜索部分
,
简单的说拥有这些部件你的产品就可以叫做一个索引引擎了
,MS
使用的桌面搜索服务
(Index service)
也是这几部分组成的
,
那么我们接下来一步一步分析这几部分
:
1.
Source
作为输入部分
,
为一个指定的文件目录
,
先要具备全目录扫描
,
这时要看我们是否设定了文件
Filter,
很多时候我们只需要把
PDF,HTML
等有用的文件去做索引
,
索引设定
Filter
还是可以提供更好的性能和准确度
,
这里我们创建一个
Document
模块负责文件目录的管理
,
该模块要具备文件系统扫描
,
文件类型过虑
,
还要能将扫描得到的有用文件路径存储到内存中为以后打开这些文件做索引做准备
,
这里我使用了一个
vector
做的文件路径存储
.
2.
Analysis
模块负责对文件内容进行解析
,
不同的文件调用不同的解析器
,
这里的文件就是由上面的
vector
提供的
,
这里设计一定要为将来其他用户使用拓展文件类型提供接口
,
否则你的设计就太不
Flexible,
可以考虑诸如
Façade
的设计模式开发
.
我在这里抽象了一个虚基类
:
class CFileParserBase
{
public:
CFileParserBase(void);
~CFileParserBase(void);
virtual int parseWord(IN char * read_buf, CString FileName) = 0;
virtual char * getContent(CString FileName) = 0;
};
其它类需要去重载文件解析和文件内容获取两个基本函数
.
3.
将解析的关键字建立反向索引
,
这里我使用的是数据库
,
因为好的
Database
会在你查询时提供优化
,
速度也就会更快一些
,
性能对于搜索引擎来说是最重要的
.
这一部分的实现我下篇文章详细说
:
相关文章推荐
- Spring 框架学习(一):设计理念、整体架构
- Android App整体架构设计的思考(一)
- 记录梦幻手游PC端辅助开发及设计思路之整体架构
- Android App整体架构设计的思考
- 基于.net的可扩展框架设计 - 整体架构
- Android App整体架构设计的思考(一)
- Android App整体架构设计的思考
- 【项目总结】扯一扯电商网站前端css的整体架构设计(1)
- 基于Hadoop的大数据平台实施记——整体架构设计
- 支付系统整体设计:整体架构设计以及注意要点(一)
- 支付系统整体设计:整体架构设计以及注意要点(三)
- Android App整体架构设计的思考
- Android App整体架构设计的思考
- 基于Hadoop的大数据平台实施记——整体架构设计
- Xen 的整体架构和整体设计
- Spring整体架构和设计理念笔记
- Android App整体架构设计的思考
- 基于Hadoop的大数据平台实施记——整体架构设计
- [跟我学中小企业架构部署]之一:整体架构设计 推荐