达梦8 全文索引

全文索引简介

对于文本类型的字段,进行搜索时,如果数据量很大,使用 like 或者 instr 查询时效果不太理想,这个时候可以考虑使用全文索引。全文索引会通过分词算法把该字段的内容进行拆分,提高检索效率。

创建语法:
CREATE CONTEXT INDEX <索引名> ON [<模式名>.] <表名> (<索引列定义>) [<STORAGE
子句>] [LEXER <分词参数>] [<SYNC 子句>];

说明:
1、不写模式名默认是为当前模式
2、分词参数有5种:CHINESE_LEXER,中文最少分词;CHINESE_VGRAM_LEXER,机械双字分词;CHINESE_FP_LEXER,中文最多分词;ENGLISH_LEXER,英文分词;DEFAULT_LEXER,中英文最少分词;默认分词是 CHINESE_LEXER;
3、不指定<SYNC 子句>时创建全文索引后,系统不进行全文索引填充;指定为 SYNC 时系统将在全文索引建立后对全文索引执行一次完全填充;指定为 SYNC TRANSACTION 时系统将在每次事务提交后,自动以增量更新方式填充全文索引,不需要用户手动填充。

注意:
  • 由于系统会为全文索引名加上前缀与后缀,因此指定的全文索引名长度不能超过122字节
  • 全文索引必须在一般用户表上定义,而不能在系统表、视图、临时表、列存储表和外部表上定义
  • 一个全文索引只作用于表的一个文本列,不允许为组合列和计算列
  • 同一列只允许创建一个全文索引;
  • <列名>为文本列,类型可为CHAR、CHARACTER、VARCHAR、LONGVARCHAR、TEXT或CLOB;

创建全文索引

--最简单
create context index "INDEX_STR_NAME"
on "DMTEST_XX"."XX_TEST"("STR_NAME")
;
--加分词参数
create context index "INDEX_STR_NAME"
on "DMTEST_XX"."XX_TEST"("STR_NAME")
lexer CHINESE_FP_LEXER
;
--加同步类型
create context index "INDEX_STR_NAME"
on "DMTEST_XX"."XX_TEST"("STR_NAME")
lexer CHINESE_FP_LEXER
sync TRANSACTION
;

创建完全文索引,如果没有使用 sync,需要自己手动填充一次!重要!!!如果没有进行填充,将查不到数据!

ALTER CONTEXT INDEX INDEX_STR_NAME ON "DMTEST_XX"."XX_TEST" REBUILD;

REBUILD 为完全填充,此方式首先会将全文索引辅助清空,再将基表中所有记录逐个取出,根据分词算法获得分词结果,即字/词所在记录的 ROWID 和出现次数,保存在词表中。INCREMENT 为增量填充,此方式只是将基表中发生数据变化的记录执行分词并保存分词结果。OPTIMIZE 操作仅仅对全文索引辅助表进行优化,去除冗余信息,不影响查询结果。

使用全文索引

1、使用 CONTAINS 子句查询时,<列名>必须是已经建立了全文索引并填充后的列,否则系统会报错;
2、CONTAINS 谓词内支持 AND | AND NOT | OR 的使用,AND 的优先级高于 OR 的优先级;
3、创建了全文索引的列依然支持like查询,不过用不了全文索引

在这里插入图片描述



在这里插入图片描述



在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值