使用场景:
  当需要在大量文章中通过关键字搜索文章时,Oracle自带的全文索引对于提高搜索性能非常有帮助,并且使用也很方便。
  使用前的准备工作:
  1、先查看oracle是否自带有ctxsys用户,如果没有该用户则不能使用全文索引功能,必须先手动安装,安装方式很简单,参考下一步;
  2、如果自带有ctxsys用户,请忽略该步骤;
  (1)dba账号登录SQLPLUS,创建全文索引使用的表空间;
  create tablespace textidx datafile '/oradata/textidx/ctxsys.dbf size 10240M autoextend on next 32M maxsize 20480M;
  (2)执行oracle自带的脚本:$ORACLE_HOME/ctx/admin/catctx.sql
  @?/ctx/admin/catctx.sql ctxsystextidxtemp nolock
  第一个参数ctxsys为ctxsys用户的密码;
  第二个参数textidx为ctxsys用户要使用的表空间;
  第三个参数temp为ctxsys用户使用的临时表空间;
  第四个参数nolock为ctxsys用户处于解锁状态。
  (3)用ctxsys账号登录并执行脚本
  connect ctxsys/ctxsys
  执行以下脚本:@?/ctx/admin/defaults/drdefus.sql
  正式开始使用全文索引:
  1、先授予用户权限,例如:user用户需要执行全文索引;
  grant execute on ctxsys.ctx_ddl to user with grant option;
  2、设置词法分析器
  exec ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer');
  第一个参数:词法分析器的名称,可自行命名;
  第二个参数:词法分析器的类型,主要有如下几种类型:
  basic_lexer:主要针对英文;
  chinese_vgram_lexer:专门用于汉语,支持所有的汉语编码,缺点是机械拆分,
  例如:我是程序猿,会被拆分为:我、我是、程序、序猿、是程;
  chinese_lexer:新版的汉语分析器,只能用UTF-8的编码,比上面一种更智能,效率更高;
  例如:我是程序猿,会被拆分为:我、程序猿;
  3、给相应字段建立全文索引,和普通索引一样;
  CREATE INDEX content_textidx ON tableName(columnName) indextype is ctxsys.context parameters('lexer my_lexersync(on commit)');
  参数lexer: 指定自己使用的词法分析器;
  参数sync(on commit): 表示在索引所在的表更新数据的时候自动更新全文索引库;