oracle 的全文检索,抄的,见笑了

最近做的项目要与Oracle打交道...并且要用到Oracle自带的"全文检索"

语法很简单(前提建好索引):
select * from 表名 where CONTAINS(列名,'要检索的关键字')>0
就OK了.

可是发现查询出来结果要远比:
select * from 表名 where 列名 like '%要检索的关键字%'
要少的多

但是如果用:
select * from 表名 where CONTAINS(列名,'%要检索的关键字%')>0
查询的结果是差不多了.可是速度却慢了很多??

从网上找了找也没找出什么结果,
后来发现是没有建Oracle的"词法分析器"

现在我把用Oracle全文检索的简单用法完整的说一遍:

建好表:
插入数据:
建基于中文的词法分析器:
语法:begin ctx_ddl.create_preference('分析器名称','chinese_vgram_lexer'); end;
建基于词法分析器的表索引:
语法:create index 索引名 on 表名 ( 列名 ) indextype is ctxsys.context parameters('lexer 分析器名称');
进行检索:
语法:select * from 表名 where CONTAINS(列名,'要检索的关键字')>0

-------------------------------------------------------------------------------------------------------
当然了.这是初步的检索.
比如你的表中插入或删除很多数据时,Oracle一般不会自动的与索引同步.这时就要重建索引............................

--索引的同步(重建)
begin ctx_ddl.sync_index('索引名' );
end;
--索引的优化
begin ctx_ddl.optimize_index('索引名' ,'FULL' );
end;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值