--首先檢查資料庫中是否有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_OPTIMIZE
is
begin
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