4、如果需要给一张表的多个字段一起增加全文索引,例如:搜索一篇文章和标题字段包含‘shadon’字符的所有信息,如果给文章增加了多字段的全文索引,可以直接坐到这一点;
  在有ctx_ddl执行权限的用户下执行如下脚本:
  exec ctx_ddl.create_preference('content_textidx_pref','MULTI_COLUMN_DATASTORE');
  exec ctx_ddl.set_attribute(' content_textidx_pref','columns','content,title'); // content和title为表的字段名称,表示为哪些字段建立多字段全文索引;
  创建索引:
  CREATE INDEX content_textidx ON tableName(columnName)
  INDEXTYPE IS ctxsys.CONTEXT PARAMETERS('DATASTORE ctxsys.content_textidx_pref lexer my_lexer sync(on commit)')
  注意:多字段全文索引有一个非常大的弊端,是当title字段更新时,无法同步更新全文索引;但是content字段更新时,会自动更新全文索引。
  目前我的做法是通过增加一伪列,这一列包含title和content字段的内容,如果更新title和content的内容,同时更新伪列的内容,并且‘多字段的全文索引’增加到这个伪列上;
  全文索引的优化:
  同步: 将数据的更新立即同步到全文索引的信息数据表中(如果有时候根据关键字查询不到数据,可以先同步一下。);
  脚本:exec ctx_ddl.sync_index ('indexName');
  优化: 由于表中的数据会经常更新、删除,而全文索引的信息表不会立即删除,这需要我们定时的去执行如下脚本。
  脚本:exec ctx_ddl.optimize_index('indexName','FULL');
  注意事项:
  (1)如果前面创建全文索引的时候带上了参数“sync(on commit)”,则同步不需要手工去执行,当数据变动时,会自动进行同步操作;
  (2)优化操作一定要放在Job中定时来执行,可以根据数据变动的频率自行决定优化脚本的更新频率;