oracle 全文检索

该全文检索是建立在数据库层面的,只在企业级应用开发中使用过。

使用后,大数据量下会导致数据插入、变更的效率降低,而且涉及定时器同步、刷新索引,对资源的消耗较高,并可能影响数据库表同步操作。

所以,仅用作学习研究。

核心为oracle的about('xxx')函数,前期的操作及定时器,都是此函数做准备的。

 

更高效、有效、符合语言习惯的全文检索解决方案,推荐Lucene、solr。

 

--1.授权

grant ctxapp to rili
grant execute on ctx_ddl to rili

--2.使用应用用户连接,创建域索引

begin ctx_ddl.create_preference('club_lexer','chinese_vgram_lexer'); 
end;
--(1)项目名称索引
create index index_xmmc
 on rili.office_hitachi_yyxmdj   (xmdj_xmmc  ) 
 indextype is ctxsys.context; 
 --(2)用户名称索引
 create index index_yhmc
 on rili.office_hitachi_yyxmdj   (xmdj_yhmc ) 
 indextype is ctxsys.context ; 
 
--删除某个索引
DROP INDEX   index_xmmc

--查询格式
SELECT score(1) s ,  xmdj_xmmc d  from rili.office_hitachi_yyxmdj
 WHERE CONTAINS (xmdj_xmmc,'about(测试)',1)> 1 
 
 select score(1) s,xmdj_yhmc yh from rili.office_hitachi_yyxmdj 
 where contains (xmdj_yhmc,'about(测试)',1)>1
 
 select xiangmubianhao,xmdj_xmmc,xmdj_yhmc,xmdj_xmdz  from rili.office_hitachi_yyxmdj e where 
 xmdj_xmmc in
 (SELECT xmdj_xmmc d  from rili.office_hitachi_yyxmdj
 WHERE CONTAINS (xmdj_xmmc,'about(测试)',1)> 1 )
 and xmdj_yhmc in
 ( select xmdj_yhmc yh from rili.office_hitachi_yyxmdj 
 where contains (xmdj_yhmc,'about(测试)',1)>1)
 and xiangmubianhao is not null  
 order by e.xmdj_xmbhnian asc,e.xmdj_xmbhhao asc
 
--索引同步于优化(使用 job定时工作)需要在cmd 中 sqlplus 下执行。
--(1)   创建过程
--项目名称过程
 create or replace procedure pro_index_xmmc  as
      begin
      ctx_ddl.sync_index('index_xmmc');
      end;
     /
--用户名称过程
  create or replace procedure pro_index_yhmc  as
      begin
      ctx_ddl.sync_index('index_yhmc');
      end;
     /
--(2 )job定时工作
    VARIABLE jobno number;
   BEGIN
   DBMS_JOB.SUBMIT(:jobno,'pro_index_yhmc();',  
   SYSDATE, 'SYSDATE +1/(60*24*60)');  
   commit;  
   END;  
    /
--删除触发与定时工作
drop procedure hsp_sync_index

猜你喜欢

转载自rhodian.iteye.com/blog/2012069
今日推荐