一种基于ORACLE数据库的海量中文数据查询方法及系统.pdf

上传人:111****112 文档编号:4560151 上传时间:2018-10-20 格式:PDF 页数:10 大小:1.44MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410602655.6

申请日:

2014.10.31

公开号:

CN104317937A

公开日:

2015.01.28

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/30申请公布日:20150128|||实质审查的生效IPC(主分类):G06F 17/30申请日:20141031|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

北京思特奇信息技术股份有限公司

发明人:

姜连海

地址:

100086 北京市海淀区中关村南大街6号中电信息大厦16层

优先权:

专利代理机构:

北京轻创知识产权代理有限公司 11212

代理人:

杨立

PDF下载: PDF下载
内容摘要

本发明涉及一种基于Oracle数据库的海量中文数据查询方法及系统,所述方法包括:步骤1,在Oracle数据库层创建基于中文字段的文本索引;步骤2,创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;步骤3,在Oracle数据库层执行两个job;步骤4,根据创建的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。本发明在中文字段上建立文本索引,然后建立job定时地去给新增的数据建立索引和优化已经建立的索引,效率高,易于维护,适合大数据的查询。

权利要求书

权利要求书
1.  一种基于Oracle数据库的海量中文数据查询方法,其特征在于,包括:
步骤1,在Oracle数据库层创建基于中文字段的文本索引;
步骤2,创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;
步骤3,在Oracle数据库层执行两个Job;
步骤4,基于经两个Job处理后的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。

2.  根据权利要求1所述的海量中文数据查询方法,其特征在于,所述步骤1具体包括:
步骤11,删除Oracle数据库层中原有的词法分析器,并基于中文字段新建词法分析器;
步骤12,删除Oracle数据库层中原有的非索引字表类,并基于中文字段新建非索引字表类;
步骤13,基于新建的非索引字表类创建非索引字表,该非索引字表中定义了所有不适用于进行数据查询的词语;
步骤14,在Oracle数据库中,对非索引字表中定义的词语以外的所有中文字段创建文本索引。

3.  根据权利要求1或2所述的海量中文数据查询方法,其特征在于,还包括对创建的文本索引进行校验。

4.  根据权利要求3所述的海量中文数据查询方法,其特征在于,所述对创建的文本索引进行校验包括:若能成功调用SQL语句中的contains命令进行查询,则表明文本索引创建成功。

5.  根据权利要求1所述的海量中文数据查询方法,其特征在于,所述步骤2中,采用PLSQL工具创建job。

6.  根据权利要求1所述的海量中文数据查询方法,其特征在于,所述步骤2还包括:在创建Job时,设置Job执行的时间间隔。

7.  一种基于Oracle数据库的海量中文数据查询系统,其特征在于,包括:
索引创建模块,其用于在Oracle数据库层创建基于中文字段的文本索引;
Job创建模块,其用于创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;
Job执行模块,其用于在Oracle数据库层执行两个job;
查询模块,其用于基于经两个Job处理后的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。

8.  根据权利要求7所述的海量中文数据查询系统,其特征在于,所述索引创建模块包括:
词法分析器处理模块,其用于删除Oracle数据库层中原有的词法分析器,并基于中文字段新建词法分析器;
非索引字表类处理模块,其用于删除Oracle数据库层中原有的非索引字表类,并基于中文字段新建非索引字表类;
非索引字表创建模块,其用于基于新建的非索引字表类创建非索引字表,该非索引字表中定义了所有不适用于进行数据查询的词语;
文本索引建立模块,其用于在Oracle数据库中,对非索引字表中定义的词语以外的所有中文字段创建文本索引。

9.  根据权利要求7或8所述的海量中文数据查询系统,其特征在于, 还包括校验模块,其用于对创建的文本索引进行校验。

10.  根据权利要求7所述的海量中文数据查询系统,其特征在于,所述非索引字表类处理模块采用PLSQL工具创建job。

说明书

说明书一种基于Oracle数据库的海量中文数据查询方法及系统
技术领域
本发明涉及IT行业浏览器和数据库大数据量查询交互领域,特别是涉及一种基于Oracle数据库的海量中文数据查询方法及系统。
背景技术
在很多的系统中,经常会遇到对中文字符的模糊查询,比如:关于系统的地址管理,数据量大概是上千万的地址数据,然后我们经常会根据名称来检索这些中文数据,传统的模糊查询采用的是:like"%xxxx%"这种方式来查询,这种方式会进行全表的扫描检索,在数据量比较小的系统中能够基本满足用户的需求,遇到上百万、甚至上千万的数据的时候,这种方式基本就做废了,查询速度非常地慢。因此,本发明提出了一种适合大数据查询的海量中文数据查询方法及系统。
发明内容
本发明所要解决的技术问题是提供一种基于Oracle数据库的海量中文数据查询方法及系统,用于解决数据量大的中文数据查询方法及系统。
本发明解决上述技术问题的技术方案如下:一种基于Oracle数据库的海量中文数据查询方法,包括:
步骤1,在Oracle数据库层创建基于中文字段的文本索引;
步骤2,创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;
步骤3,在Oracle数据库层执行两个job;
步骤4,基于经两个Job处理后的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述步骤1具体包括:
步骤11,删除Oracle数据库层中原有的词法分析器,并基于中文字段新建词法分析器;
步骤12,删除Oracle数据库层中原有的非索引字表类,并基于中文字段新建非索引字表类;
步骤13,基于新建的非索引字表类创建非索引字表,该非索引字表中定义了所有不适用于进行数据查询的词语;
步骤14,在Oracle数据库中,对非索引字表中定义的词语以外的所有中文字段创建文本索引。
进一步,还包括对创建的文本索引进行校验。
进一步,所述对创建的文本索引进行校验包括:若能成功调用SQL语句中的contains命令进行查询,则表明文本索引创建成功。
进一步,所述步骤2中,采用PLSQL工具创建job。
进一步,所述步骤2还包括:在创建Job时,设置Job执行的时间间隔。
本发明的技术方案还包括一种基于Oracle数据库的海量中文数据查询系统,包括:
索引创建模块,其用于在Oracle数据库层创建基于中文字段的文本索引;
Job创建模块,其用于创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;
Job执行模块,其用于在Oracle数据库层执行两个job;
查询模块,其用于基于经两个Job处理后的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。
进一步,所述索引创建模块包括:
词法分析器处理模块,其用于删除Oracle数据库层中原有的词法分析器,并基于中文字段新建词法分析器;
非索引字表类处理模块,其用于删除Oracle数据库层中原有的非索引字表类,并基于中文字段新建非索引字表类;
非索引字表创建模块,其用于基于新建的非索引字表类创建非索引字表,该非索引字表中定义了所有不适用于进行数据查询的词语;
文本索引建立模块,其用于在Oracle数据库中,对非索引字表中定义的词语以外的所有中文字段创建文本索引。
进一步,还包括校验模块,其用于对创建的文本索引进行校验。
进一步,所述非索引字表类处理模块采用PLSQL工具创建job。
本发明的有益效果是:本发明在中文字段上建立文本索引,然后建立job定时地去给新增的数据建立索引和优化已经建立的数据的索引,这种方式效率高,且维护起来也很容易,适合大数据的查询。通过这种技术可以改善现在系统中模糊查询存在的查询慢问题,有利于提高系统的整体性能。
附图说明
图1为本发明所述基于Oracle数据库的海量中文数据查询方法的流程示意图;
图2为本发明本发明所述基于Oracle数据库的海量中文数据查询系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,本实施例给出了一种基于Oracle数据库的海量中文数据查询方法,包括:
步骤1,在Oracle数据库层创建基于中文字段的文本索引;
步骤2,创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;
步骤3,在Oracle数据库层执行两个job;
步骤4,基于经两个Job处理后的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。本实施例中所述步骤1具体包括:
步骤11,删除Oracle数据库层中原有的词法分析器,并基于中文字段新建词法分析器;
步骤12,删除Oracle数据库层中原有的非索引字表类,并基于中文字段新建非索引字表类;
步骤13,基于新建的非索引字表类创建非索引字表,该非索引字表中定义了所有不适用于进行数据查询的词语;
步骤14,在Oracle数据库中,对非索引字表中定义的词语以外的所有中文字段创建文本索引。
此外,还需要对创建的文本索引进行校验,具体方法为:若能调用SQL语句中的contains命令进行查询,则表明文本索引创建成功。
本实施例采用PLSQL工具创建job,且设置Job执行的时间间隔,比如可以设置用于给Oracle数据库中的新增数据添加文本索引的Job每15分钟执行一次,设置用于优化Oracle数据库中所有数据的文本索引的Job每天执行一次。
对应地,本实施例还给出了一种基于Oracle数据库的海量中文数据查询 系统,如图2所示,包括:
索引创建模块,其用于在Oracle数据库层创建基于中文字段的文本索引;
Job创建模块,其用于创建两个Job,一个Job用于给Oracle数据库中的新增数据添加文本索引,另一个Job用于优化Oracle数据库中所有数据的文本索引;
Job执行模块,其用于在Oracle数据库层执行两个job;
查询模块,其用于基于经两个Job处理后的文本索引,采用SQL语句在Oracle数据库中进行中文字段查询。
此外,还包括校验模块,其用于对创建的文本索引进行校验。
本实施例中,所述索引创建模块包括:
词法分析器处理模块,其用于删除Oracle数据库层中原有的词法分析器,并基于中文字段新建词法分析器;
非索引字表类处理模块,其用于删除Oracle数据库层中原有的非索引字表类,并基于中文字段新建非索引字表类;
非索引字表创建模块,其用于基于新建的非索引字表类创建非索引字表,该非索引字表中定义了所有不适用于进行数据查询的词语;
文本索引建立模块,其用于在Oracle数据库中,对非索引字表中定义的词语以外的所有中文字段创建文本索引。
采用本实施例的海量中文数据查询系统及方法,进行数据查询的具体实施过程如下:
1、删除原有词法分析器,若没有词法分析器会报错,则可以忽略。实现的程序如下:
BEGIN
  ctx_ddl.drop_preference('CHINA_LEXER');
END;
2、创建词法分析器,新建的词法分析器用来智能提取分段器中的纯文本,并将其拆分为不连续的标记,实际作用就是解析文本并标记,为后续的检索提供前提条件。实现程序如下。

3、删除原有非索引字表类,如果没有非索引字表类会报错,可以忽略,实现程序如下:
BEGIN
  ctx_ddl.drop_preference('CC_STOPLIST');
END;
4、创建非索引字表类

5、创建非索引字表
非索引字表也称为停用词,在Oracle数据库中,全文索引允许用户建立停用词,来屏蔽那些包含信息量比较小且出现概率比较高的词语。
比如英文中的a、this、are、the等词语,几乎每篇文章中都会包含这些常用词,因此对这些词语进行索引的意义不大。本实施例列举了如下的停用词:

6、用CTXSYS/CTXSYS用户登录数据库
给dbcustadm赋权限,如果没有CTXSYS用户,可以先直接执行登录,如果登录没有执行成功,就需要SPD解决CTXSYS系统用户问题。
GRANT EXECUTE ON ctx_ddl TO dbcustadm;
7、创建索引,实现的程序如下。
CREATE INDEX dbcustadm.addrmsgindex ON dbcustadm.danalogmsgadd(addr_msg)INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS('MEMORY 50M LEXER dbcustadm.CHINA_LEXER STOPLIST dbcustadm.CC_STOPLIST');
8、验证索引是否创建成功
能够用contains查询,就说明创建成功了,举例如下:
SELECT*FROM danalogmsgadd WHERE contains(addr_msg,'31栋1单元')>0;
SELECT*FROM danalogmsgadd WHERE contains(addr_msg,'31栋1单元and 1室')>0;
9:在PLSQL工具下,创建两个job,创建job的内容如下:
--job1-每15分钟给Oracle数据库中的新增数据添加文本索引
what:ctx_ddl.sync_index('dbcustadm.addrmsgindex');
next date:sysdate
interval:SYSDATE+(1/24/4)
--job2-每天进行一次索引优化
what:CTX_DDL.OPTIMIZE_INDEX('dbcustadm.addrmsgindex','full');
next date:sysdate
interval:SYSDATE+1
10、job执行检查:
select*from all_jobs;
创建的job会在这里展示出来,资源的应该也有job;
last_date:会记录下次job的运行时间,job1应该是每15分钟执行一次,job2是每天执行一次;
total_time:会记录job的运行次数,执行后数量递加。
总地来说,本实施例在数据库层根据技术方案中所介绍的方式建立需要使用到的索引,然后再维护索引的job,最后通过应用程序中使用模糊的SQL语句中采用contains(addr_msg,'xxxx')>0进行查询。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

一种基于ORACLE数据库的海量中文数据查询方法及系统.pdf_第1页
第1页 / 共10页
一种基于ORACLE数据库的海量中文数据查询方法及系统.pdf_第2页
第2页 / 共10页
一种基于ORACLE数据库的海量中文数据查询方法及系统.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种基于ORACLE数据库的海量中文数据查询方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种基于ORACLE数据库的海量中文数据查询方法及系统.pdf(10页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 104317937 A (43)申请公布日 2015.01.28 CN 104317937 A (21)申请号 201410602655.6 (22)申请日 2014.10.31 G06F 17/30(2006.01) (71)申请人 北京思特奇信息技术股份有限公司 地址 100086 北京市海淀区中关村南大街 6 号中电信息大厦 16 层 (72)发明人 姜连海 (74)专利代理机构 北京轻创知识产权代理有限 公司 11212 代理人 杨立 (54) 发明名称 一种基于 Oracle 数据库的海量中文数据查 询方法及系统 (57) 摘要 本发明涉及一种基于 Orac。

2、le 数据库的海 量中文数据查询方法及系统, 所述方法包括 : 步 骤 1, 在 Oracle 数据库层创建基于中文字段的文 本索引 ; 步骤 2, 创建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据添加文本索引, 另一 个Job用于优化Oracle数据库中所有数据的文本 索引 ; 步骤 3, 在 Oracle 数据库层执行两个 job ; 步骤 4, 根据创建的文本索引, 采用 SQL 语句在 Oracle 数据库中进行中文字段查询。本发明在中 文字段上建立文本索引, 然后建立 job 定时地去 给新增的数据建立索引和优化已经建立的索引, 效率高, 易于维护, 适合大。

3、数据的查询。 (51)Int.Cl. 权利要求书 2 页 说明书 6 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书6页 附图1页 (10)申请公布号 CN 104317937 A CN 104317937 A 1/2 页 2 1. 一种基于 Oracle 数据库的海量中文数据查询方法, 其特征在于, 包括 : 步骤 1, 在 Oracle 数据库层创建基于中文字段的文本索引 ; 步骤 2, 创建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据添加文本索引, 另 一个 Job 用于优化 Oracle 数据库中所有数据的。

4、文本索引 ; 步骤 3, 在 Oracle 数据库层执行两个 Job ; 步骤4, 基于经两个Job处理后的文本索引, 采用SQL语句在Oracle数据库中进行中文 字段查询。 2. 根据权利要求 1 所述的海量中文数据查询方法, 其特征在于, 所述步骤 1 具体包括 : 步骤 11, 删除 Oracle 数据库层中原有的词法分析器, 并基于中文字段新建词法分析 器 ; 步骤 12, 删除 Oracle 数据库层中原有的非索引字表类, 并基于中文字段新建非索引字 表类 ; 步骤 13, 基于新建的非索引字表类创建非索引字表, 该非索引字表中定义了所有不适 用于进行数据查询的词语 ; 步骤 14。

5、, 在 Oracle 数据库中, 对非索引字表中定义的词语以外的所有中文字段创建文 本索引。 3.根据权利要求1或2所述的海量中文数据查询方法, 其特征在于, 还包括对创建的文 本索引进行校验。 4. 根据权利要求 3 所述的海量中文数据查询方法, 其特征在于, 所述对创建的文本索 引进行校验包括 : 若能成功调用 SQL 语句中的 contains 命令进行查询, 则表明文本索引创 建成功。 5. 根据权利要求 1 所述的海量中文数据查询方法, 其特征在于, 所述步骤 2 中, 采用 PLSQL 工具创建 job。 6. 根据权利要求 1 所述的海量中文数据查询方法, 其特征在于, 所述步骤。

6、 2 还包括 : 在 创建 Job 时, 设置 Job 执行的时间间隔。 7. 一种基于 Oracle 数据库的海量中文数据查询系统, 其特征在于, 包括 : 索引创建模块, 其用于在 Oracle 数据库层创建基于中文字段的文本索引 ; Job 创建模块, 其用于创建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据添加 文本索引, 另一个 Job 用于优化 Oracle 数据库中所有数据的文本索引 ; Job 执行模块, 其用于在 Oracle 数据库层执行两个 job ; 查询模块, 其用于基于经两个 Job 处理后的文本索引, 采用 SQL 语句在 Oracle 数。

7、据库 中进行中文字段查询。 8. 根据权利要求 7 所述的海量中文数据查询系统, 其特征在于, 所述索引创建模块包 括 : 词法分析器处理模块, 其用于删除 Oracle 数据库层中原有的词法分析器, 并基于中文 字段新建词法分析器 ; 非索引字表类处理模块, 其用于删除 Oracle 数据库层中原有的非索引字表类, 并基于 中文字段新建非索引字表类 ; 非索引字表创建模块, 其用于基于新建的非索引字表类创建非索引字表, 该非索引字 权 利 要 求 书 CN 104317937 A 2 2/2 页 3 表中定义了所有不适用于进行数据查询的词语 ; 文本索引建立模块, 其用于在 Oracle 数。

8、据库中, 对非索引字表中定义的词语以外的所 有中文字段创建文本索引。 9. 根据权利要求 7 或 8 所述的海量中文数据查询系统, 其特征在于, 还包括校验模块, 其用于对创建的文本索引进行校验。 10. 根据权利要求 7 所述的海量中文数据查询系统, 其特征在于, 所述非索引字表类处 理模块采用 PLSQL 工具创建 job。 权 利 要 求 书 CN 104317937 A 3 1/6 页 4 一种基于 Oracle 数据库的海量中文数据查询方法及系统 技术领域 0001 本发明涉及 IT 行业浏览器和数据库大数据量查询交互领域, 特别是涉及一种基 于 Oracle 数据库的海量中文数据查。

9、询方法及系统。 背景技术 0002 在很多的系统中, 经常会遇到对中文字符的模糊查询, 比如 : 关于系统的地址管 理, 数据量大概是上千万的地址数据, 然后我们经常会根据名称来检索这些中文数据, 传统 的模糊查询采用的是 :like“ xxxx “ 这种方式来查询, 这种方式会进行全表的扫描检 索, 在数据量比较小的系统中能够基本满足用户的需求, 遇到上百万、 甚至上千万的数据的 时候, 这种方式基本就做废了, 查询速度非常地慢。因此, 本发明提出了一种适合大数据查 询的海量中文数据查询方法及系统。 发明内容 0003 本发明所要解决的技术问题是提供一种基于 Oracle 数据库的海量中文数。

10、据查询 方法及系统, 用于解决数据量大的中文数据查询方法及系统。 0004 本发明解决上述技术问题的技术方案如下 : 一种基于 Oracle 数据库的海量中文 数据查询方法, 包括 : 0005 步骤 1, 在 Oracle 数据库层创建基于中文字段的文本索引 ; 0006 步骤 2, 创建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据添加文本索 引, 另一个 Job 用于优化 Oracle 数据库中所有数据的文本索引 ; 0007 步骤 3, 在 Oracle 数据库层执行两个 job ; 0008 步骤4, 基于经两个Job处理后的文本索引, 采用SQL语句在Ora。

11、cle数据库中进行 中文字段查询。 0009 在上述技术方案的基础上, 本发明还可以做如下改进。 0010 进一步, 所述步骤 1 具体包括 : 0011 步骤 11, 删除 Oracle 数据库层中原有的词法分析器, 并基于中文字段新建词法分 析器 ; 0012 步骤 12, 删除 Oracle 数据库层中原有的非索引字表类, 并基于中文字段新建非索 引字表类 ; 0013 步骤 13, 基于新建的非索引字表类创建非索引字表, 该非索引字表中定义了所有 不适用于进行数据查询的词语 ; 0014 步骤 14, 在 Oracle 数据库中, 对非索引字表中定义的词语以外的所有中文字段创 建文本索。

12、引。 0015 进一步, 还包括对创建的文本索引进行校验。 0016 进一步, 所述对创建的文本索引进行校验包括 : 若能成功调用 SQL 语句中的 contains 命令进行查询, 则表明文本索引创建成功。 说 明 书 CN 104317937 A 4 2/6 页 5 0017 进一步, 所述步骤 2 中, 采用 PLSQL 工具创建 job。 0018 进一步, 所述步骤 2 还包括 : 在创建 Job 时, 设置 Job 执行的时间间隔。 0019 本发明的技术方案还包括一种基于 Oracle 数据库的海量中文数据查询系统, 包 括 : 0020 索引创建模块, 其用于在 Oracle 。

13、数据库层创建基于中文字段的文本索引 ; 0021 Job 创建模块, 其用于创建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据 添加文本索引, 另一个 Job 用于优化 Oracle 数据库中所有数据的文本索引 ; 0022 Job 执行模块, 其用于在 Oracle 数据库层执行两个 job ; 0023 查询模块, 其用于基于经两个 Job 处理后的文本索引, 采用 SQL 语句在 Oracle 数 据库中进行中文字段查询。 0024 进一步, 所述索引创建模块包括 : 0025 词法分析器处理模块, 其用于删除 Oracle 数据库层中原有的词法分析器, 并基于 。

14、中文字段新建词法分析器 ; 0026 非索引字表类处理模块, 其用于删除 Oracle 数据库层中原有的非索引字表类, 并 基于中文字段新建非索引字表类 ; 0027 非索引字表创建模块, 其用于基于新建的非索引字表类创建非索引字表, 该非索 引字表中定义了所有不适用于进行数据查询的词语 ; 0028 文本索引建立模块, 其用于在 Oracle 数据库中, 对非索引字表中定义的词语以外 的所有中文字段创建文本索引。 0029 进一步, 还包括校验模块, 其用于对创建的文本索引进行校验。 0030 进一步, 所述非索引字表类处理模块采用 PLSQL 工具创建 job。 0031 本发明的有益效果。

15、是 : 本发明在中文字段上建立文本索引, 然后建立 job 定时地 去给新增的数据建立索引和优化已经建立的数据的索引, 这种方式效率高, 且维护起来也 很容易, 适合大数据的查询。通过这种技术可以改善现在系统中模糊查询存在的查询慢问 题, 有利于提高系统的整体性能。 附图说明 0032 图 1 为本发明所述基于 Oracle 数据库的海量中文数据查询方法的流程示意图 ; 0033 图 2 为本发明本发明所述基于 Oracle 数据库的海量中文数据查询系统的结构示 意图。 具体实施方式 0034 以下结合附图对本发明的原理和特征进行描述, 所举实例只用于解释本发明, 并 非用于限定本发明的范围。。

16、 0035 如图 1 所示, 本实施例给出了一种基于 Oracle 数据库的海量中文数据查询方法, 包括 : 0036 步骤 1, 在 Oracle 数据库层创建基于中文字段的文本索引 ; 0037 步骤 2, 创建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据添加文本索 引, 另一个 Job 用于优化 Oracle 数据库中所有数据的文本索引 ; 说 明 书 CN 104317937 A 5 3/6 页 6 0038 步骤 3, 在 Oracle 数据库层执行两个 job ; 0039 步骤4, 基于经两个Job处理后的文本索引, 采用SQL语句在Oracle数据库中。

17、进行 中文字段查询。本实施例中所述步骤 1 具体包括 : 0040 步骤 11, 删除 Oracle 数据库层中原有的词法分析器, 并基于中文字段新建词法分 析器 ; 0041 步骤 12, 删除 Oracle 数据库层中原有的非索引字表类, 并基于中文字段新建非索 引字表类 ; 0042 步骤 13, 基于新建的非索引字表类创建非索引字表, 该非索引字表中定义了所有 不适用于进行数据查询的词语 ; 0043 步骤 14, 在 Oracle 数据库中, 对非索引字表中定义的词语以外的所有中文字段创 建文本索引。 0044 此外, 还需要对创建的文本索引进行校验, 具体方法为 : 若能调用 SQ。

18、L 语句中的 contains 命令进行查询, 则表明文本索引创建成功。 0045 本实施例采用 PLSQL 工具创建 job, 且设置 Job 执行的时间间隔, 比如可以设置用 于给 Oracle 数据库中的新增数据添加文本索引的 Job 每 15 分钟执行一次, 设置用于优化 Oracle 数据库中所有数据的文本索引的 Job 每天执行一次。 0046 对应地, 本实施例还给出了一种基于 Oracle 数据库的海量中文数据查询系统, 如 图 2 所示, 包括 : 0047 索引创建模块, 其用于在 Oracle 数据库层创建基于中文字段的文本索引 ; 0048 Job 创建模块, 其用于创。

19、建两个 Job, 一个 Job 用于给 Oracle 数据库中的新增数据 添加文本索引, 另一个 Job 用于优化 Oracle 数据库中所有数据的文本索引 ; 0049 Job 执行模块, 其用于在 Oracle 数据库层执行两个 job ; 0050 查询模块, 其用于基于经两个 Job 处理后的文本索引, 采用 SQL 语句在 Oracle 数 据库中进行中文字段查询。 0051 此外, 还包括校验模块, 其用于对创建的文本索引进行校验。 0052 本实施例中, 所述索引创建模块包括 : 0053 词法分析器处理模块, 其用于删除 Oracle 数据库层中原有的词法分析器, 并基于 中文。

20、字段新建词法分析器 ; 0054 非索引字表类处理模块, 其用于删除 Oracle 数据库层中原有的非索引字表类, 并 基于中文字段新建非索引字表类 ; 0055 非索引字表创建模块, 其用于基于新建的非索引字表类创建非索引字表, 该非索 引字表中定义了所有不适用于进行数据查询的词语 ; 0056 文本索引建立模块, 其用于在 Oracle 数据库中, 对非索引字表中定义的词语以外 的所有中文字段创建文本索引。 0057 采用本实施例的海量中文数据查询系统及方法, 进行数据查询的具体实施过程如 下 : 0058 1、 删除原有词法分析器, 若没有词法分析器会报错, 则可以忽略。实现的程序如 下。

21、 : 0059 BEGIN 说 明 书 CN 104317937 A 6 4/6 页 7 0060 ctx_ddl.drop_preference(CHINA_LEXER) ; 0061 END ; 0062 2、 创建词法分析器, 新建的词法分析器用来智能提取分段器中的纯文本, 并将其 拆分为不连续的标记, 实际作用就是解析文本并标记, 为后续的检索提供前提条件。 实现程 序如下。 0063 0064 3、 删除原有非索引字表类, 如果没有非索引字表类会报错, 可以忽略, 实现程序如 下 : 0065 BEGIN 0066 ctx_ddl.drop_preference(CC_STOPLIS。

22、T) ; 0067 END ; 0068 4、 创建非索引字表类 0069 0070 5、 创建非索引字表 0071 非索引字表也称为停用词, 在 Oracle 数据库中, 全文索引允许用户建立停用词, 来屏蔽那些包含信息量比较小且出现概率比较高的词语。 0072 比如英文中的 a、 this、 are、 the 等词语, 几乎每篇文章中都会包含这些常用词, 因 此对这些词语进行索引的意义不大。本实施例列举了如下的停用词 : 0073 说 明 书 CN 104317937 A 7 5/6 页 8 0074 6、 用 CTXSYS/CTXSYS 用户登录数据库 0075 给 dbcustadm 。

23、赋权限 , 如果没有 CTXSYS 用户 , 可以先直接执行登录, 如果登录没 说 明 书 CN 104317937 A 8 6/6 页 9 有执行成功, 就需要 SPD 解决 CTXSYS 系统用户问题。 0076 GRANT EXECUTE ON ctx_ddl TO dbcustadm ; 0077 7、 创建索引, 实现的程序如下。 0078 CREATE INDEX dbcustadm.addrmsgindex ON dbcustadm.danalogmsgadd(addr_ msg)INDEXTYPE IS CTXSYS.CONTEXT 0079 PARAMETERS(MEMORY。

24、 50M LEXER dbcustadm.CHINA_LEXER STOPLIST dbcustadm. CC_STOPLIST) ; 0080 8、 验证索引是否创建成功 0081 能够用 contains 查询 , 就说明创建成功了, 举例如下 : 0082 SELECT*FROM danalogmsgadd WHERE contains(addr_msg,31 栋 1 单元 )0 ; 0083 SELECT*FROM danalogmsgadd WHERE contains(addr_msg,31 栋 1 单 元 and 1 室 )0 ; 0084 9: 在 PLSQL 工具下, 创建两。

25、个 job, 创建 job 的内容如下 : 0085 -job1- 每 15 分钟给 Oracle 数据库中的新增数据添加文本索引 0086 what:ctx_ddl.sync_index(dbcustadm.addrmsgindex) ; 0087 next date:sysdate 0088 interval:SYSDATE+(1/24/4) 0089 -job2- 每天进行一次索引优化 0090 what:CTX_DDL.OPTIMIZE_INDEX(dbcustadm.addrmsgindex,full) ; 0091 next date:sysdate 0092 interval:S。

26、YSDATE+1 0093 10、 job 执行检查 : 0094 select*from all_jobs ; 0095 创建的 job 会在这里展示出来 , 资源的应该也有 job ; 0096 last_date : 会记录下次 job 的运行时间 ,job1 应该是每 15 分钟执行一次 ,job2 是每天执行一次 ; 0097 total_time: 会记录 job 的运行次数 , 执行后数量递加。 0098 总地来说, 本实施例在数据库层根据技术方案中所介绍的方式建立需要使用 到的索引, 然后再维护索引的 job, 最后通过应用程序中使用模糊的 SQL 语句中采用 contains(addr_msg,xxxx)0 进行查询。 0099 以上所述仅为本发明的较佳实施例, 并不用以限制本发明, 凡在本发明的精神和 原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。 说 明 书 CN 104317937 A 9 1/1 页 10 图 1 图 2 说 明 书 附 图 CN 104317937 A 10 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1