创建并使用oracle全文搜索

原文出处:  http://blog.sina.com.cn/s/blog_694448320100l1bh.html

 

说明:使用全文索引需要使用词法分析器,什么叫词法分析器呢,如:你想搜索"中国人",那么数据库的底层就会给你以“中国”、“国人”等等进行解析去搜索,大概就是这样,oracle有几个可供选择的分析器,默认创建全文搜索时会默认有一个分析器,不过对中文搜索支持的不是太好,其中'chinese_vgram_lexer'分析器是对中文支持最好的,所以呢在创建全文搜索时应该要制定一个索引的解析器,之后就可以利用sql语句去根据建立的索引字段并利用contains(字段名称,'关键字')>0 的函数去查询了,很简单,下面上代码:

  准备工作:

在进行下面的代码之前首先要确保你的数据库中有CTXSYS用户并且还要CTXAPP角色权限,如果没有这个用户和角色,说明你的数据库创建时未安装intermedia功能。你必须修改数据库以安装这项功能。 默认安装情况下,ctxsys用户是被锁定的,因此要先启用ctxsys的用户。

 

下面是代码了:

 

--定义词法分析器
BEGIN
  ctx_ddl.create_preference ('joblexer', 'chinese_vgram_lexer');、
END;

说明:'joblexer'代表你使用的定义的分析器的名称,名字可以随便写,便于创建索引时使用

 

--创建全文索引并制定分析器
CREATE INDEX  索引的名称 ON 表名(表字段) indextype is ctxsys.context parameters('lexer  自定义的分析器的代指名称');

如:CREATE INDEX  jobindex ON mr_job(name) indextype is ctxsys.context parameters('lexer joblexer');


--删除索引(不想要了,可以执行这条语句删除)
drop index jobindex force

 

--sql查询语句
select j.name from mr_job j where   contains(j.name,'服务员')>0

 

--同步索引
BEGIN
ctx_ddl.sync_index('jobindex');
END;

(当我们对表执行了删除、修改、增加的操作的话,就要对搜因进行一下跟新了,不更新的话,索引对以前的信息有效,搜索的还是以前的信息,更改的或者添加的就永远也搜不到,所以修改了或者添加了就需要更新下索引了)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值