首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

oracle 全文索引

作者:  时间: 2011-05-30

GRANT CTXAPP TO XYADMIN;
 Begin
    -- 定义一个词法分析器
    --ctx_ddl.drop_preference('cnlex');
    --ctx_ddl.create_preference('cnlex','CHINESE_LEXER');  --针对中文
    ctx_ddl.create_preference('cnlex','chinese_vgram_lexer');  --针对中文
    -- 定义一个相关词表
    --ctx_ddl.drop_preference('mywordlist');
    --ctx_ddl.create_preference('mywordlist', 'BASIC_WORDLIST');
    --ctx_ddl.set_attribute('mywordlist','PREFIX_INDEX','TRUE');
    --ctx_ddl.set_attribute('mywordlist','PREFIX_MIN_LENGTH',1);
    --ctx_ddl.set_attribute('mywordlist','PREFIX_MAX_LENGTH', 5);
    --ctx_ddl.set_attribute('mywordlist','SUBSTRING_INDEX', 'YES');
  end;
 
COMMIT;
drop index CorporationName_index force
drop index BusinessScope_index force

--CREATE INDEX CorporationName_index ON CorporationMainTable(CorporationName) indextype is ctxsys.context
--parameters ('DATASTORE CTXSYS.DIRECT_DATASTORE FILTER
--CTXSYS.NULL_FILTER LEXER cnlex WORDLIST mywordlist');

CREATE INDEX CorporationName_index ON CorporationMainTable(CorporationName) indextype is ctxsys.context PARAMETERS ('lexer cnlex');
CREATE INDEX BusinessScope_index ON CorporationMainTable(BusinessScope) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('lexer cnlex');

-- sync:
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''cnlex'');',
SYSDATE, 'SYSDATE + (1/24/4)');
commit;
END;

-- optimizer
VARIABLE jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''cnlex'',''FULL'');',
SYSDATE, 'SYSDATE + 1');
commit;
END;


--其中,第一个job的SYSDATE + (1/24/4)是指每隔15分钟同步一次,第二个job的SYSDATE + 1是每隔1天做一次全优化。具体的时间间隔,你可以根据自己的应用的需要而定。至此,你的全文检索功能已设置完成。