题记前段时间做了一个全文检索的知识库系统构建方案的调研,在此分享。
调研方案范围
调研目的在于找到一个在功能和性能上都比较优秀的全文检索的知识库系统实现方案在调研过程中优先考虑如何实现全文本检索功能,结合考虑系统的功能性能以及构建完整系统的效率。
构建全文检索的知识库系统有多种行之有效的方案,主要有以下三种实现思路
方案使用支持全文检索功能的数据库,构建大型文本管理数据库系统,从文件管理数据库出发设计知识库系统
方案使用全文搜索引擎实现全文本检索功能,以此开始设计知识库系统
方案使用构建知识库系统。
以下分别介绍。
全文检索数据库方案
介绍
支持全文检索的数据库以建立和维护索引的方式对存储在数据库表中的大型文本系统执行有效率的文本搜索。
知识库系统中全文搜索的对象主要是表达知识信息的文章,典型的搜索应用可能是查找出标题或者内容中含有某个搜索项的所有文章。
把知识库中的文章存储在按照标题内容等文本字段建立起来的数据库表中,实现知识库系统中的全文查找也就同数据库中的全文检索功能等同起来了。
实现全文检索的的组件在中称为。
的体系结构如下,在本次调研所关注的范围里,这个体系结构的中心是为存储在数据库中的文章的标题内容等字段信息建立索引。
一体系结构
使用数据库实现中文全文检索
目标确认支持中文全文检索功能总结操作过程,并探求更好的性能。
基于个人版,企业版和标准版应该得到同样的结果。
这里介绍主要的过程
步骤确保数据库的一些配置项
检查数据库是否安装了组件默认安装
检查数据库是否具有用户和角色
如果没有则运行,选择,然后在选择数据库功能时将和都选中
检查服务器是否有对服务的监听
命令窗口下执行,在打印信息中通常有
这样一段即表明外部调用功能打开否则需要修改以打开该功能
步骤创建数据库并建立一个用户
创建数据库
在数据库下建立用户
赋予用户角色步骤进行数据库设计并建表
使用为知识库系统建立一个大致的概念模型如下,导出物理视并生成脚本,在数据库实例中生成表中需要用到和两张表,这两张表分别表示文章的和文章的每个版本,并且假定每个版本的内容附件都可以改变,但是文章标题不可以修改。
二知识库系统的概念模型
在建立的表中插入一些记录,其中包含一条,上午好,上午好,我是中国人,我深深的爱着我的祖国和人民,我是人民的儿子
步骤建立索引
以用户连接到数据库
创建首选项
创建索引
如上命令以提供的中文分词器对表的字段建立了索引。
建立的索引保存在用户默认的临时表空间里以打头的个表,其中以表最为重要。
查询一下该表
可以发现该表中存储的就是对表的字段分析得到的全部索引项。
步骤执行查询中国人
可以查出刚刚插入表格中的第三条记录
步骤建立维护索引的
索引在刚才执行创建索引的语句后被创建,但是此后对数据库执行的任何增删改操作都不会引起索引的同步更新。
因此需要建立一个同步更新操作的执行同步更新操作
另一方面,在执行多次同步更新之后,索引区会引起索引项的稀释,势必需要优化,因此还需要为数据库建立一个定期优化索引结构的
这两个可以建立如下
同步优化,其中,第一个的是指每隔分钟同步一次,第二个的是每隔天做一次全优化。
具体的时间间隔,可以应用需要而定。
至此,全文检索功能已设置完成。
两个问题
对建立索引的支持
知识库系统一般采用在线编辑器编辑文章,所见即所得的文本一般采用语法。
而源文件中大量的标记符号不应该参与与查询字符串的匹配,因为不仅这些如这样的格式标记在搜索如时不应该被搜索到而且如果不加过滤的对这些部分建立索引项势,对于一个大型的文本查询系统而言会极大的影响效率。
回顾的体系结构,在将文本分词创建索引项时已经充分考虑到了支持等格式化的文档在建立索引时过滤掉无表意内容的格式脚本。
这可以通过在创建索引时设置区分组来实现。
语句如下
,上午好
中文分词程序设置的改进
在为建立引擎创建首选项时,设置的分词器是提供的。
实际上还提供了一个比较而言,这个分词器分词算法更智能效率更高。
在中就表中第三条记录的字段建立索引项时,索引项由的个减少到个。
在官方文档中提到仅支持字符集的数据库,过程中,发现在中也能够使用。
未完,待续。。。