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

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

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

2.若没有,则需要手动建立,先建立全文检索要使用的空间

sqlplus / as sysdba  --进入控制台

create tablespace Idx_ctxsys datafile '/oradata/sg186fx/ctxsys01.dbf size 10240M autoextend on next 32M maxsize 20480M;--创建全文检索使用的表空间

3.创建全文检索使用的用户和角色及相应的包,则需要执行oracle自带的一个脚本:cd $ORACLE_HOME/ctx/admin/catctx.sql

还是在sqlplus中执行:

@?/ctx/admin/catctx.sql ctxsys Idx_ctxsys temp nolock

在执行这个脚本的时候,输入了几个参数,第一个参数ctxsys为ctxsys用户的密码

第二个参数Idx_ctxsys为ctxsys用户要使用的表空间

第三个参数temp为ctxsys用户使用的临时表空间

第四个参数nolock为ctxsys用户处于解锁状态。

4.创建完成后,要登录ctxsys用户

connect ctxsys/ctxsys

执行以下脚本:@?/ctx/admin/defaults/drdefus.sql(这是个很重要的脚本,后面创建索引会使用该脚本创建的信息)

5.创建全文索引语法分析器

先要明确使用全文索引的用户,我要使用全文索引的是sgpm用户

因此,grant execute on ctxsys.ctx_ddl to sgpm with grant option;

connect sgpm/sgpm

设置语法分析器:exec ctx_ddl.drop_preference('chinalexer');

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

设置词法属性:exec ctx_ddl.drop_preference('idx_c_store');

begin

ctx_ddl.create_preference('idx_c_store','BASIC_STORAGE');

ctx_ddl.set_attribut('idx_c_store','I_TABLE_CLAUSE','tablespaces  Idx_ctxsy');

ctx_ddl.set_attribute('idx_c_store','I_INDEX_CLAUSE','tablespace  Idx_ctxsy compress 2');

end;

/

6.创建索引

create index sgpm.idx_c_cons_name on sgpm.c_cons(cons_name) indextype is ctxsys.context parameters('lexer chinalexer storage idx_c_store');

7.同步索引

variable jobno number;

begin

dbms_job.submit(:jobno,'pkg_sp_tools.p_cont_sys_index();',sysdate,'trunc(sysdate)+19/24+1');  --执行的是个性化方法。

end;

/

普通的就是用: exec ctx_ddl.sync_index('idx_c_cons_name');

到此,全文检索创建成功,contains函数就可以正常使用了。

注意:创建的过程中会出现ORA-29879:cannot create multiple domain index on a column listusing same indextype ,这说明在其他用户下已经建立了该索引。

oracle全文索引的更多相关文章

  1. oracle全文索引的创建和使用

    整理一下我所遇到过的有关全文索引的问题吧 一.设置词法分析器 Oracle实现全文检索,其机制其实很简单.即通过Oracle专利的词法分析器(lexer),将文章中所有的表意单元(Oracle 称为  ...

  2. Oracle 全文索引相关命令

    --用sys用户登录,解锁ctxsys用户alter user ctxsys account unlock; --授权给对应用户grant execute on ctx_ddl to yw; --用y ...

  3. Oracle建立全文索引详解

    Oracle建立全文索引详解1.全文检索和普通检索的区别 不使用Oracle text功能,当然也有很多方法可以在Oracle数据库中搜索文本,比如INSTR函数和LIKE操作: SELECT *FR ...

  4. Oracle索引知识学习笔记

    目录 一.Oracle索引简介 1.1 索引分类 1.2 索引数据结构 1.3 索引特性 1.4 索引使用注意要点 1.5.索引的缺点 1.6.索引失效 二.索引分类介绍 2.1.位图索引 1.2.函 ...

  5. B-index、bitmap-index、text-index使用场景详解

    索引的种类:B-tree索引.Bitmap索引.TEXT index1.  B-tree索引介绍: B-tree 是一种常见的数据结构,也称多路搜索树,并不是二叉树.B-tree 结构可以显著减少定位 ...

  6. 《收获,不止SQL优化》读书笔记

    整体性能分析 AWR.ASH.ADDM.AWRDD 整体分析调优工具 AWR:关注数据库的整体性能的报告: ASH:数据库中的等待事件与哪些SQL具体对应的报告: ADDM:oracle给出的一些建议 ...

  7. oracle的全文索引

    1.查看oracle的字符集 SQL> select userenv('language') from dual; USERENV('LANGUAGE') ------------------- ...

  8. Oracle B-tree、位图、全文索引三大索引性能比较及优缺点汇总

    引言:大家都知道“效率”是数据库中非常重要的一个指标,如何提高效率大家可能都会想起索引,但索引又这么多种,什么场合应该使用什么索引呢?哪种索引可以提高我们的效率,哪种索引可以让我们的效率大大降低(有时 ...

  9. Solr的学习使用之(十)数据库(Oracle、SqlServer)原有的全文索引功能和Solr对比?

    本人有个问题一直不解,既然solr的全文索引功能这么强大,而且效果也不错,那为什么那些数据库厂商比如Oracle.SqlServer,不把solr的功能集成进去呢,或者说把全文索引的功能做好点,做到和 ...

随机推荐

  1. InventSumDelta表的作用

    https://groups.google.com/forum/#!topic/microsoft.public.axapta.programming/rRfbJo9M0dk The purpose ...

  2. Python学习笔记之抽象

    一.创建函数 >>> import math >>> x=1 >>> y=math.sqrt >>> callable(x) # ...

  3. 查找增强出口和BADI程序

    *&---------------------------------------------------------------------* *& Report Z_FIND_EX ...

  4. 怎么把Windows主机上的目录共享到Ubuntu上

    使用Oracle VM VirtualBox在Windows主机上创建了一台Ubuntu虚拟机,怎么把宿主机上的目录共享到Ubuntu上,可使用以下方法: eg.把Windows主机上D盘里的test ...

  5. react-native执行 npm install cl.exe找不到 的问题

    最近在学习react-native,昨天在尝试某个demo时,执行 npm instal, 总是遇到 cl.exe文件找不到,最开始以为Microsoft Visual C++ 2015 Redist ...

  6. WCF初探-26:WCF中的会话

    理解WCF中的会话机制 在WCF应用程序中,会话将一组消息相互关联,从而形成对话.会话”是在两个终结点之间发送的所有消息的一种相互关系.当某个服务协定指定它需要会话时,该协定会指定所有调用(即,支持调 ...

  7. C#中MySQL数据库的备份 还原 初始化

    直接在cmd执行如下代码: mysqldump -h localhost -uroot -p123 --default-character-set=utf8 --opt --disable-keys ...

  8. JavaEE Spring

    1.  Spring以一己之力撼动了Sun公司的JavaEE传统重量级框架(EJB),逐渐成为使用最多的JavaEE企业应用开发框架. 2.  Spring是分层的JavaEE应用一站式的轻量级开源框 ...

  9. stm8s103串口

    #include "uart.h" #define UART2#define uart_115200 1 void Init_UART2(void){#ifdef UART2    ...

  10. C#简易一元二次求解器

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...