`

Oracle全文检索

阅读更多

     网上面有很多关于全文检索方面的介绍,小弟在这里把自己使用的一些经验共享出来,大家共同学习,如有错误请大家指正;小弟把创建全文检索的过程封装成了一个存储过程,此存储过程的作用是
1、如果一个表从没有创建过全文检索则开始创建全文检索;
2、如果已经创建了全文检索则对全文检索进行刷新,以使新加入的数据也能检索出来;

使用全文检索的流程如下:
1、添加权限
    检查数据库中是否有CTXSYS用户和CTXAPP角色。如果没有这个用户和角色,意味着你的数据库创建时未安装intermedia功能。你必须修改数据库以安装这项功能。
   把CTXAPP角色赋于当前用户 GRANT CTXAPP TO 当前用户;
   把CTX_DDL的执行权限赋于当前用户; GRANT EXECUTE ON CTX_DDL TO 当前用户;
2、创建中文解析类型;
   在当前用户下执行 EXEC CTX_DDL.CREATE_PREFERENCE('CTX_LEXER','CHINESE_VGRAM_LEXER');
3、创建全文检索字段;
   这里有几个需要注意的地方,也是小弟在使用时摸索出来的,一、全文检索字段间最好用“,”隔开,这对汉字的拆分有帮助,如qwjs=王刚,19890622,男......;二、全文检索字段中不要把数字和数字放在一起,中间要用汉字或字母分开,否则检索不出来,如“王刚,19890622,371312,男”,此时使用全文检索查询19890622或371312时检索不出;但如果是“王刚,19890622,男,371312”就没问题了;
4、创建全文检索存储过程
   参考附件
5、创建全文检索方法
   EXEC P_CREATE_QWJS_CN('参数1','参数2','参数3');
    说明:
     参数1:是全文检索的索引名称;参数2:是表名;参数3:是全文索引的字段名如上面例子中的qwjs; 
    如:EXEC P_CREATE_QWJS_CN('IDX_CK_QWJS','T_RK_CK','QWJS');
6、全文检索查询方法
   select * from 表名 where contains(qwjs,'检索的值') > 0; 例: select * from t_rk_ck where contains(qwjs,'王刚') > 0,如果是多条件可用select * from t_rk_ck where contains(qwjs,'王刚') > 0 and contains(qwjs,'19890622') > 0,或者是select * from t_rk_ck where contains(qwjs,'王刚 and 19890622') > 0;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics