oracle全文索引和定时任务

本文介绍如何在Oracle数据库中配置和使用全文检索功能,包括创建索引、分词器、同步及优化索引等步骤。

--首先检查数据库中是否有CTXSYS用户和CTXAPP脚色。

--如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。

--你必须修改数据库以安装这项功能。


--用sys用户为了用户gzinfo分配权限

grant  CTXAPP  to  gzinfo; grant   execute   on  ctx_ddl  to  gzinfo;

--回到gzinfo用户

--创建测试表,CLOBTEXT字段为需要索引的字段

create   table  INXTEXT (ID  number ( 13 ), CLOBTEXT CLOB);


--创建分词,这里用了chinese_vgram_lexer,分词名为GZINFO_LEXER

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

--创建索引,索引名为INX_TEST (PARAMETERS 中需要以LEXER开头,替换时用replace)

create   index  INX_TEST  ON  INXTEXT (CLOBTEXT) INDEXTYPE  IS  CTXSYS.CONTEXT PARAMETERS ( ' LEXER INFO_LEXER ' );

--创建记录表

create   table  JOBTEST (ID DATE, CONTENT  VARCHAR2 ( 200 ));

--创建同步存储过程,ctx_ddl.sync_index('INX_TEST')为同步全文索引,同步表字段中的信息

create   or   replace   procedure  PROC_SYNC_INDEX is begin
ctx_ddl.sync_index( ' INX_TEST ' ); insert   into  JOBTEST  values (SYSDATE,  ' 同步任务于 ' || SYSDATE || ' 执行 ' ); end ;

--创建同步优化存储过程,ctx_ddl.optimize_index('INX_TEST','FULL')为优化全文索引

Code create or replace procedure PROC_SYNC_OPTIMIZEisbegin
ctx_ddl.sync_index('INX_TEST');
ctx_ddl.optimize_index('INX_TEST','FULL');insert into JOBTEST values(SYSDATE, '同步优化任务于'||SYSDATE||'执行');end;

--创建定时任务以便同步全文索引

DECLARE
       X  NUMBER ; BEGIN
   SYS.DBMS_JOB.SUBMIT
   (
    job         =>  X 
   ,what        =>   ' PROC_SYNC_INDEX; '
   ,next_date   =>  SYSDATE
   ,interval    =>   ' SYSDATE+2/1440 '
   ); END ;

--创建定时任务以便同步优化全文索引

Code DECLARE
       X NUMBER;BEGIN
   SYS.DBMS_JOB.SUBMIT
   (
    job        => X 
   ,what       => 'PROC_SYNC_OPTIMIZE;'
   ,next_date  => SYSDATE
   ,interval   => 'TRUNC(SYSDATE + 1) + 1/(24)'
   );END;


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/skey_chen/archive/2009/11/12/4801211.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值