首页 > 数据库 >记一次在oracle数据库中添加全文索引的过程

记一次在oracle数据库中添加全文索引的过程

时间:2024-03-04 16:23:53浏览次数:19  
标签:index end 创建 数据库 lexer 全文索引 gy oracle

前景:

在创建全文索引之前,有如下几个内容需要确认下:

1.全文索引不支持nvarchar2类型,所以需要创建全文索引的字段的字段类型,如果是这个类型,可以修改为varchar2();

2.如果需要创建全文索引的字段包含 (1、中文、英文结合 , 或者纯英文;2、中文、数字结合,或者纯数字的)这几种情况的,需要对字段单独处理,就比如zjhm字段,我们可以添加一个新的字段zjhm1来存储处理过的zjhm,然后对zjhm1创建全文索引;处理的过程在附件函数中;

一、创建全文索引

1.开启全文索引查询权限

ALTER USER 用户名 ACCOUNT UNLOCK;

2.使用sys用户以dba权限登录,授予执行刷新全文检索的权限  (注意:此步骤不操作,后面的刷新的存储过程编译报错)

GRANT EXECUTE ON ctx_ddl TO 用户名;

3.创建文本解析器bdcdj_lexer,默认使用chinese_vgram_lexer参数。(bdcdj_lexer为自定义)

BEGIN
ctx_ddl.create_preference ('bdcdj_lexer', 'chinese_vgram_lexer');
END;

或者

call ctx_ddl.create_preference ('bdcdj_lexer', 'chinese_vgram_lexer');

4.创建对应的表字段全文索引。

CREATE INDEX ier_ztt_gy_qlr_qlrmc ON ztt_gy_qlr(qlrmc) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER jgxt_lexer SYNC (ON COMMIT)');

CREATE INDEX ier_ztt_gy_qlr_zjh1 ON ztt_gy_qlr(zjh1) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER jgxt_lexer SYNC (ON COMMIT)');

5.验证表中的全文索引是否创建成功

select * from bdc_regn_zb where contains(zl,'云岩区金')>0 

---------
删除索引:
drop index ier_bdc_fwsyq_bdcqzh force;

二、添加触发器来完成新增的字段的插入操作

比如:

create or replace trigger "tri_ztt_gy_qlr"
before insert or update on ztt_gy_qlr
for each row
begin
  
  if inserting then
       :new.zjh1 :=pro_add_split(:new.zjh);
    end if;

  if updating  then
         :new.zjh1 :=pro_add_split(:new.zjh);
  end if;
end;

 

三、添加刷新全文索引存储过程 

1、使用查询语句获得库中所有的全文索引,并拼接刷新语句,用于存储过程。
select 'ctx_ddl.optimize_index('||''''||index_name||''''||','||''''||'full'||''''||');' as sql from user_indexes where index_type='DOMAIN' order by table_name

2、创建存储过程

create or replace procedure pro_optimize_index authid current_user is
begin
    begin
/*示例:
ctx_ddl.optimize_index('IER_BDC_QLRLB_ZJHM2','full')。
具体执行内容从上面的查询语句结果中摘取。
*/
end;
end;

3、创建定时任务,调用存储过程,每天夜间03:00定时刷新操作。

declare
IER_INDEX_job number;
begin
    IER_INDEX_job:=1083;
    dbms_job.isubmit(IER_INDEX_job,'begin pro_optimize_index();end;',trunc(sysdate+1)+3/24,'sysdate+1');
commit;
end;

4、查询定时任务创建成果与否。
select job,schema_user,last_date,next_date,interval,what from user_jobs where what like '%pro_opt%'

select * from dba_jobs where what like '%pro_optimize_index%'

标签:index,end,创建,数据库,lexer,全文索引,gy,oracle
From: https://www.cnblogs.com/ammyblog/p/18052050

相关文章

  • 对象不能从 DBNull 转换为其他类型,数据库空数据映射实体类的时候如何处理数据
    场景是这样的数据库有几个字段是可以为空的、即插入的时候可以不插这些数据,当一条有‘缺口’的数据回到后端映射实体类的时候,会导致对象不能从DBNull转换为其他类型的错误此时可以编写一个通用的方法来处理这种转换publicstaticTConvertDBNull<T>(objectvalue,Tdefaul......
  • 肖SIR__数据库之安装navicat__11.3
    一、安装navicat1、下载navicat 2、解压压缩包 3、点击exe文件 4、输入密钥:NAVH-WK6A-DMVK-DKW35、点击打开:输入连接参数: 6、查看连接好仓库 ......
  • linux安装南大通用数据库 GBase 8s V8
    @目录1、操作系统、数据库2、下载链接3、安装文档4、安装前准备4.1、以root用户创建gbasedbt组和用户4.2、创建GBase8s数据库安装目录4.3、上传并解压安装包5、安装5.1、执行安装程序5.2、回车继续直到接受许可条款5.3、输入安装目录绝对路径5.4、选择安装类型5.5、选择安装......
  • linux 安装神州通用数据库 V7
    @目录操作系统、数据库1、官方下载链接2、windows客户端下载链接3、官方安装手册4、安装前准备3.1、创建安装用户3.2、以root用户修改神通数据库安装包的所有者为shentong用户3.3、以root用户创建神通数据库主目录并修改所有者为shentong用户3.4、以root用户临时修改init.d......
  • 拯救php性能的神器webman-数据库
    有了webman的这个框架,我们得看看它是怎么使用数据库的,毕竟我们不能一直用内存变量啊。好,很简单一句话跑起来。 composerrequire-Willuminate/databaseilluminate/paginationilluminate/eventssymfony/var-dumper 官方对于这里数据库的解释是:webman数据库默认采用的是......
  • 利用RAII机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登
    目录数据库连接池SqlConnPool类SqlConnRAII类数据库连接池数据库连接池(DatabaseConnectionPool)是一种用于管理和共享数据库连接的技术,旨在解决应用程序在高并发场景下频繁创建和销毁数据库连接所带来的性能问题和资源浪费。当应用程序启动或初始化时,数据库连接池预先创建......
  • Oracle 表空间和数据文件遇到的坑 (转载于 微信公众号 JieKeXu DBA之路)
    转载链接https://mp.weixin.qq.com/s/IKF_KrWkxZ5BJS-OacYWUw前言本文适用于普通的标准的8k块大小的Oracle企业版数据库,10g、11g、19c均可适用,但对于ODA,一体机可能有所区别,请慎重使用1.db_files的坑记录一下年前遇到的一个关于表空间扩容的小问题,大家都知道对于Oracle......
  • 数据库SQL行专列和列转行
    行转列适用于按照数据的某个维度的聚合,例如成绩单,按照学生姓名整合各科成绩;列转行适用于拆分某条数据的各属性,例如拆分学生成绩单,按名称、学科、成绩展示;行转列方法:通常使用聚合函数对数据进行处理,例如sum、max、count等SELECTuser_name,MAX(CASEcourseWHEN'数学'T......
  • 断电引起文件scn异常数据库恢复---惜分飞
    联系:手机/微信(+8617813235971)QQ(107644445)标题:断电引起文件scn异常数据库恢复作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]由于异常断电,数据库最初启动报错FriMar0108:41:172024ALTERDATABASE  MOUNTSucces......
  • 数据库性能调优
    一、数据库设计优化数据库设计是影响数据库性能的重要因素之一。在数据库设计时,应该尽量避免冗余数据、过度规范化和设计过于复杂的数据模型。以下是几个数据库设计优化的建议:1、避免冗余数据对于数据中重复的信息,应该将其拆分到单独的表中,以便提高数据的一致性和更新的效率。......