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
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;
exec ctx_ddl.sync_index('yu_test_index') exec ctx_ddl.optimize_index('yu_test_index','full')
本文介绍了如何在Oracle数据库中设置全文检索功能,包括检查数据库是否已具备全文检索、安装特定语言的默认偏好、创建全文索引及使用索引进行查询。通过这些步骤,可以有效提升文档和信息的检索效率。
1093

被折叠的 条评论
为什么被折叠?



