Oracle 建立全文检索chinese_vgram_lexer类型
oracle数据库对全文检索的支持功能必须在本机装有oracle客户端的前提下使用。
Oracle版全文检索的设置需通过执行sql语句来完成。如本机为oracle数据库服务端,则可直接执行,如oracle服务端不在本机,则需安装相应软件来执行(oracle sql developer)。
Sql语句如下:
为全文检索用户添加权限(以下语句中“test”为所用数据库名称)
grant ctxapp to test;
grant execute on ctx_cls to test;
grant execute on ctx_ddl to test;
grant execute on ctx_doc to test;
grant execute on ctx_output to test;
grant execute on ctx_query to test;
grant execute on ctx_report to test;
grant execute on ctx_thes to test;
grant execute on ctx_ulexer to test;
创建词法分析
exec ctx_ddl.create_preference('my_lexer', 'chinese_vgram_lexer');
创建索引(Table_Name 为要创建索引的表,Column_Name为要创建索引的列)
CREATE INDEX ORGCONTEXTINDEX ON Table_Name(Column_Name) indextype is
ctxsys.context parameters('lexer my_lexer');
建立索引调度(使系统在规定时间内每天进行文件索引更新,如下例为第二天的零点进行更新索引)
alter system set job_queue_processes=10;
declare
jobss number;
begin
sys.dbms_job.submit(job => jobss,what =>'ctx_ddl.sync_index (''orgContextIndex'');',next_date =>to_date(to_char(sysdate+1,'yyyy/mm/dd')||'00:00:01','yyyy/mm/dd hh24:mi:ss'),interval => 'sysdate+1');
commit;
end;
删除索引
DROP INDEX ORGCONTEXTINDEX;
删除词法分析
exec ctx_ddl.drop_preference('my_lexer');
更新索引
Exec ctx_ddl.sync_index ('orgContextIndex');
优化索引,清除无用数据
exec ctx_ddl.optimize_index ('orgContextIndex', 'full');
如有需要,首先删除索引,之后删除词法分析
后续添加:一般索引创建完毕后可以看到数据库中增加了DR$ORGCONTEXTINDEX$I、DR$ORGCONTEXTINDEX$K、
DR$ORGCONTEXTINDEX$N、DR$ORGCONTEXTINDEX$R四个表(注:两个$$之间为创建的索引的名字,
本例中为orgcontextindex),其中DR$ORGCONTEXTINDEX$I是最有用的
执行下面语句:
select * from DR$ORGCONTEXTINDEX$I
呵呵,oracle对全文进行的分析结果就存储在这里了