`
zcz123
  • 浏览: 158737 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类

oracle-全文索引的学习与应用

 
阅读更多

1.sysdba用户授权

grant ctxapp to xmaricallplat;

grant ctx_ddl execute on xmaircallplat;

2.选择分析器

basic_lexer:针对英语分词器

chinese_vgram_lexer:专门的汉语分析器(支持所有汉字字符集),搜索特点:一网打尽、效率差强人意

chinese_lexer:新的汉语分析器(只支持utf8字符集),搜索特点:能够搜索大部分常用汉语词汇,效率较高

3.创建全文索引

-- 创建分析器和创建单字段的全文索引

exec ctx_ddl.create_preference('my_lexer','chinese_vgram_lexer'); 

create index kb_index on kb_node_text(kb_text) indextype is ctxsys.context parameters('lexer my_lexer'); 

-- 创建多字段的全文索引

exec ctx_ddl.create_preference('ctx_idx_subject_pref','MULTI_COLUMN_DATASTORE');

exec ctx_ddl.set_attribute('ctx_idx_subject_pref','coloumns',,'subjectname,briefintro');

create index ctx_idx_subject_pref on pmhsubjects(subjectname)

indextype is ctxsys.context parameters('DATASTORE ctxsys.ctx_idx_subject_pref exer my_lexer');

--查看自定义的参考项

select * from ctx_user_preferences;

4.简单介绍索引类型

context -- 复杂索引类型(支持普通和大字段类型如clob、blob)

ctxcat  -- 简单索引类型(支持普通类型,不支持大字段类型)

ctxrule

ctxpath

5.使用全文索引

select * from kb_node_text where contains(kb_text,'老大') > 0;

6.全文索引的维护

对应ctxsys.context索引,会产生DR$myindex$I、DR$myindex$K、DR$myindex$R、DR$myindex$N四个表,主要是I表:

SELECT token_text, token_count FROM dr$i_rsk1$I WHERE ROWNUM <= 20;(用来存分词记录,所谓全文索引,核心就是查询这个表),对应context类型需要进行sync(同步)和optimize(优化)

同步(sync): 将新的term 保存到I表

优化(optimize): 清除I表的垃圾,主要是将已经被删除的term从I表删除

查询基本的改变,可以查询视图CTX_USER_PENDING查看相应的改动:

select pnd_index_name, pnd_rowid,to_char (pnd_timestamp, 'dd-mon-yyyy hh24:mi:ss') timestamp from ctx_user_pending;

注意:对于CTXCAT类型的索引来说, 当对基表进行DML操作的时候,Oracle自动维护索引。对文档的改变马上反映到索引中。CTXCAT是事务形的索引

同步和优化方法: 可以使用Oracle提供的ctx_ddl包同步和优化索引

手动同步:exec ctx_ddl.sync_index('kb_index');

手动优化:exec ctx_ddl.optimize_index('kb_index','full');

为了保持索引记录和基本的同步的,可以采用定时优化同步域索引:

(1)创建同步存储过程

create or replace procedure sync_kb_index as

begin

 ctxsys.ctx_ddl.sync_index('kb_index');

end;

(2)创建优化存储过程

create or replace procedure optimize_kb_index as

begin

 ctx_ddl.optimize_index('kb_index','FULL');

end;

(3)创建同步定时任务

variable jobno number;  

begin

dbms_job.submit(:jobno,'sync_kb_index();',  

sysdate, 'sysdate + 1');  

commit; 

end;

(4)创建优化定时任务

variable jobno number;  

begin

dbms_job.submit(:jobno,'optimize_kb_index();',  

sysdate, 'sysdate + 2');  

commit; 

end;

分享到:
评论

相关推荐

    SQL语句索引优化_sql索引降龙十八掌(Oracle)

    - 全文索引:用于全文搜索。 - 函数索引:基于函数结果创建索引,支持更复杂的查询条件。 二、选择合适的索引策略 1. 单列索引:针对单个列创建的索引,适合频繁的等值查询。 2. 复合索引:包含多个列,适用于多...

    ORACLE索引详解及SQL优化

    3. **操作符**:某些操作符如`NOT`、`BETWEEN`、`LIKE`的模糊匹配可能导致索引失效,除非使用了前缀索引或全文索引。 4. **索引选择性**:索引的选择性越高,区分度越大,使用索引的效果越好。如果索引列的值过于...

    书籍:Oracle与MySQL数据库索引设计与优化

    4. 全文索引:支持文本搜索,适用于全文本查询。 5. 索引组织表(IOT):将数据直接存储在索引结构中,加快某些类型的数据访问速度。 二、MySQL数据库索引设计 1. InnoDB存储引擎:MySQL的InnoDB引擎支持事务处理...

    Oracle系统全面学习教程很详细的讲解.docx

    索引有多种类型,包括 B-Tree 索引、哈希索引、全文索引等。学习索引的概念和使用方法可以帮助读者更好地优化 Oracle 查询性能。 并行技术是 Oracle 中的一个高级概念,指的是使用多个处理器或核心来执行查询的能力...

    Oracle数据库系统应用实例集锦与编程

    B树索引、位图索引和全文索引等不同类型的索引适用于不同的查询场景。理解何时和如何创建索引,能显著提升数据库的查询效率。 在数据库设计中,规范化是优化数据结构的重要原则。Oracle支持第一范式(1NF)、第二...

    Oracle全文检索技术的应用.pdf

    Oracle全文检索技术是一种高效处理海量信息的工具,尤其在当今信息爆炸的时代,它的重要性日益凸显。Oracle Text是Oracle数据库提供的一种内置的全文检索组件,它允许开发者使用标准SQL语句来构建和扩展文本搜索功能...

    Oracle全文检索技术在海量数据挖掘中的应用.pdf

    在对“Oracle全文检索技术在海量数据挖掘中的应用.pdf”这一文档内容进行梳理后,可以总结出以下IT知识点: 1. 海量数据与数据挖掘的概念: 海量数据指的是庞大的、超出常规处理能力的数据集合,民航部门等业务...

    Oracle Text应用开发指南.pdf

    ### Oracle Text 应用开发指南知识点解析 #### 一、Oracle Text 概述 - **定义**:Oracle Text 是一款由 Oracle 公司提供的用于处理全文检索的强大工具,它允许用户在 Oracle 数据库中实现对非结构化文本数据的高效...

    OracleText全文检索.zip

    "OracleText全文检索.doc"可能包含OracleText的安装指南、配置步骤、查询语法以及如何将全文索引应用于实际业务场景。OracleText的使用首先需要在数据库中创建文本表和索引,然后可以利用CONTAINS或MATCHES谓词进行...

    ORACLE学习手册和案例

    - **用于文本搜索**:如果数据列主要用于全文搜索,则更适合使用全文索引。 **1.2.1.6 限制索引** 某些查询条件下,即使存在索引也无法有效利用。 **1.2.1.6.1 使用不等于操作符(、!=)** 当查询条件包含不等于...

    搜索引擎全文检索技术 oracle

    Oracle全文检索技术是数据库管理系统Oracle中的一个重要特性,它允许用户在数据库中进行高效、精确的文本搜索。全文检索技术能够理解自然语言,并从中提取出关键信息,为用户提供类似搜索引擎的体验。以下是对Oracle...

    Oracle学习笔记

    - 全文索引:用于全文搜索。 6. **事务处理** - 事务:一组逻辑操作,要么全部执行,要么全部回滚,保证数据一致性。 - 提交(COMMIT)、回滚(ROLLBACK)和保存点(SAVEPOINT)操作用于控制事务的生命周期。 7...

    oracle全文检索

    Oracle全文检索是数据库管理系统Oracle中的一种高级搜索功能,它允许用户使用自然语言查询数据库中的文本信息,而不仅仅是基于关键字的简单匹配。Oracle全文检索利用了先进的文本分析技术,包括词干提取、停用词过滤...

    Oracle XML DB应用开发Oracle Database 11g

    - 索引和搜索:Oracle XML DB允许对XML文档内容建立索引,这提高了查询性能,同时也提供了全文搜索能力。 - Web服务集成:Oracle XML DB支持Web服务,可以轻松地与Web服务交互,支持各种标准如SOAP和WSDL。 在开发...

    oracle入门基础知识

    - 全文索引:用于全文搜索。 7. 视图 - 视图的概念:虚拟表,不实际存储数据,而是基于一个或多个表的查询结果。 - 创建视图:CREATE VIEW语句。 - 更新视图:视图的更新规则根据其查询复杂度可能有限制。 8. ...

    oracle数据库的基础

    - 全文索引:用于全文搜索。 6. 安全性: - 用户与角色:创建用户,分配权限,通过角色进行权限管理。 - 权限与系统权限:GRANT和REVOKE语句用于权限的授予和回收。 - 视图:提供安全性,限制用户对数据的直接...

    Oracle Text 开发人员指南

    通过本指南的学习,开发者可以充分利用 Oracle Text 的强大功能,构建高效且精准的文本搜索应用。值得注意的是,随着技术的发展,Oracle Text 及其相关文档也会不断更新和完善,因此定期查阅最新版本的文档是非常...

    MySQL数据库原理及应用(第2版)(微课版)-PPT课件.zip

    - 全文索引:用于全文搜索。 - 索引优化:合理设计索引,避免全表扫描,减少索引维护开销。 7. **事务处理** - 事务:一组操作的集合,要么全部成功,要么全部失败。 - ACID属性:原子性(Atomicity)、一致性...

    Oracle与SqlServer区别.docx

    - SQL Server 有聚集索引和非聚集索引,还有全文索引。 - Oracle 提供多种索引类型,包括 B+树索引、位图索引、函数索引、反序索引、主键索引、散列索引和本地索引。 8. **数据类型**: - Oracle 的数据类型更为...

    Oracle_SQL_Server.rar_oracle

    - **SQL Server** 提供 B-Tree(包括唯一和非唯一)、Clustered 和 Nonclustered 索引,还有全文索引和空间索引。 5. **分区**: - **Oracle** 提供多种分区策略,如 Range、List、Hash 和 Composite 分区,适用...

Global site tag (gtag.js) - Google Analytics