Oracle 全文检索设置

来源:互联网 发布:在家上学 知乎 编辑:程序博客网 时间:2024/05/02 04:34
 

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对全文进行的分析结果就存储在这里了

原创粉丝点击