oracle中的全文索引

本文详细介绍了在Oracle数据库中构建全文索引的过程,包括创建词库分析器、索引、同步索引以及测试。重点阐述了如何使用特定的分析器创建全文索引,并在遇到索引中断的问题时提供了解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:创建词库分析器
   分析器:1.对应英语》basic_lexer 2.对应汉语》chinese_vgram_lexer  3.新的汉语分析器》chinese_lexer
BEGIN
  ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer');
END;
其中my_lexer是分析器的名字

第二步:创建索引
  创建索引时要指定分析器
  CREATE INDEX  myindex ON mytable(mycolumn) indextype is ctxsys.context parameters('lexer my_lexer');
 
个人体会:全文索引建立后,用pl/sql developer工具view table,在index这一栏是看不到索引信息的。
而本人在删除全文索引时遇到过一下报错:
SQL> drop index searchkeytbl_key;
drop index searchkeytbl_key
ORA-29868: cannot issue DDL on a domain index marked as LOADING
解决方法:
ORA-29868: cannot issue DDL on a domain index marked as LOADING
说明:在创建索引的时候断开、重启等导致索引中断没有执行成功,之后再drop或者rebuild等操作的时候都会报此错误
解决:只能drop index ind_name force强行删除,然后再重建


第三步:同步索引
  VARIABLE jobno number;
  BEGIN
  DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''index_name'');',
  SYSDATE, 'SYSDATE + (1/24/4)');
  commit;
  END;          

或优化
  VARIABLE jobno number;
  BEGIN
  DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''myindex'',''FULL'');',
  SYSDATE, 'SYSDATE + 1');
  commit;     

建完后手动运行下:
exec dbms_job.run(jobno);
※个人体会:运行job可能会有问题,此时可以单独运行索引,尝试一下
exec ctx_ddl.sync_index('index_name');
如果单独运行没有问题,则检查job是否写错或者当前操作的oracle数据库用户有无运行存储过程的权限
SQL> exec dbms_job.run(190);
begin dbms_job.run(190); end;
ORA-12011: execution of 1 jobs failed
ORA-06512: at "SYS.DBMS_IJOB", line 406
ORA-06512: at "SYS.DBMS_JOB", line 272
ORA-06512: at line 1
以上报错就是用户没有运行任何存储过程造成的,此时需要对用户加上这个权限:
SQL> grant execute any procedure to oracle_username;
再看一下job的情况
select * from user_jobs;

第四步:测试
  关联查询: select * from table_name where contains (column_name,'keyword') >0;
  SQL> select * from searchkeytbl where type='城市' and contains (key,'杨浦') >0;

转载于:https://www.cnblogs.com/dwy0820/p/oracle_qwsy.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值