【Oracle】 Oracle全文检索功能建立

本文介绍了如何在Oracle数据库中设置全文检索功能,包括检查数据库是否已具备全文检索、安装特定语言的默认偏好、创建全文索引及使用索引进行查询。通过这些步骤,可以有效提升文档和信息的检索效率。

Oracle text(全文检索) 可以把任何文档和文件编入索引,从而是访问更快,更容易检索相关的信息

1.检查数据库是否具有全文检索功能(这是针对已经建成使用的数据库)

        查看用户中是否存在ctxsys用户,查询角色里是否存在ctxapp角色。以上两个中的1个不满足(不存在),则说明没有装过全文检索功能。

      使用contains函数的时候,若没有全文检索则会报错的。



1. 

--使用如下脚本。

SQL> connect SYS/password@tns_ as SYSDBA
SQL> spool text_install.txt
SQL> @?/ctx/admin/catctx.sql CTXSYS SYSAUX TEMP NOLOCK


--脚本中各个参数含义:

CTXSYS - is the ctxsys user password
SYSAUX - is the default tablespace for ctxsys
TEMP - is the temporary tablespace for ctxsys
LOCK|NOLOCK - ctxsys user account will be locked or not

2. The next step is to install appropriatelanguage-specific default preferences.

--指定默认的安装语言

无此步骤,后续新建索引这里将报错 

如此错误DRG-10700: preference does not exist: CTXSYS.DEFAULT_WORDLIST

--如果使用US作为默认语言,执行drdefus.sql.

SQL> connect CTXSYS/password@tns_alias
SQL> @?/ctx/admin/defaults/drdefus.sql
SQL> spool off



3.建立中文语法分析器

 exec ctx_ddl.create_preference ('chinalexer', 'chinese_lexer');


4、建立全文索引

 

create index YU_TEST_INDEX on YU_TEST(name) indextype is CTXSYS.CONTEXT parameters('lexer chinalexer');

这句话的意思就是,在YU_TEST_INDEX表中的name字段上创建索引,索引类系那个为context类型,该索引用到的分析器为前面定义的my_lexer,该索引用到的过滤词组为前面定义得my_stoplist。

5、使用索引

select * from YU_TEST where contains(name,'重庆')>0; 

6.索引优化
前面已经能够进行检索了,现在就是对索引进行优化
当我们需要修改表中的数据是不会同步更新数据的,需要我们在程序中手动的更新,可以写一个oracle的触发器,当添加、删除、修改操作时,进行索引更新。也可以定时进行更新。
索引同步:
 
exec ctx_ddl.sync_index('yu_test_index')  

索引优化:
exec ctx_ddl.optimize_index('yu_test_index','full') 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值