oracle基本的全文检索

1、查看ctxsys用户是否存在
2、查看角色ctxapp是否存在
直接在数据库user和roles里面查看
3、解锁该用户:alter user ctxsys account unlock
4、赋予自己创建的用户操作的权限:grant execute on ctx_ddl to username
5、在超级管理员身份下 查看分析器或其他信息
  查看该试图:CTX_USER_PREFERENCES
  
6、登录自己的用户
ctx_ddl的函数使用要在代码块中执行
(1)创建分词器:
begin
ctx_ddl.create_preference('testlex','CHINESE_VGRAM_LEXER');
end;
这里使用中文分词器
函数create_preference的
第一个参数为分词器名字,自定义
第二个参数为分词器名称,数据库自带的
(2)创建过滤词组
 ctx_ddl.create_stoplist('my_stoplist');
(3)向过滤词组中添加关键字
    会把该组的关键字 过滤掉


7、创建索引  字段不能是nvarchar类型 否则无法创建索引
create index YU_TEST_INDEX on YU_TEST(name) indextype is 
CTXSYS.CONTEXT parameters('lexer testlex stoplist my_stoplist');  
为表name字段创建一个名字为YU_TEST_INDEX 的索引 indextype为context  
引用分词器为前面建立的分词器 过滤器为前建立的my_stoplist
8.查询
用contains来使用oracle的全文检索
select * from YU_TEST where contains(name,'北')>0;
对于查询出来的数据时无序,可以根据匹配度来进行排序
select score(1),y.* from YU_TEST y where contains(name,'重庆',1)>0 order by score(1) desc;
score(1)匹配度分数  contains的最后一个参数1 是对score的标识
9、当表中的数据有增删改时,索引就跟原来的表出现不一致的情况,这时候要更新索引,同步索引
当执行DML语句时,要更新索引
ctx_ddl.sync_index('yu_test_index');同步索引
ctx_ddl.optimize_index('yu_test_index','FULL');清除已删除的数据
10、后续,对于切词=======触发器更新索引==============函数处理字符串等
可以根据实际情况而定去选择的做一些
对于oracle的全文检索基本结束====================================================================================================






 比oracle自带的检索更好的选择lucnce

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值