达梦数据库全文索引简介

全文检索技术是智能信息管理的关键技术之一,其主要目的就是实现对大容量的非结构化数据的快速查找。DM 实现了全文检索功能,并将其作为 DM 服务器的一个较独立的组件,提供更加准确的全文检索功能,较好地解决了模糊查询方式带来的问题。
全文索引为在字符串数据中进行复杂的词搜索提供了有效支持,用户可以在指定表的文本列上创建和删除全文索引。创建全文索引后全文索引未插入任何索引信息。当用户填充全文索引时,系统才将定义了全文索引的文本列的内容进行分词,并根据分词结果填充索引。用户可以在进行全文索引填充的列上使用 CONTAINS 谓词进行全文检索。
在创建全文索引成功后,假设索引名为 INDEX_NAME,则系统会自动产生如下相关的辅助表(后面简称 I表,P表,N表,D表):CTI$INDEX_NAME$I,CTI$INDEX_NAME$P, CTI$INDEX_NAME$N和 CTI$INDEX_NAME$D,I 表主键为(WORD、FIRSTID、WID),用于保存分词结果,记录词的基本信息,通过该信息就可以快速地定位到该词的基表记录;P 表主键为(PND_DOCID),用于保存基表发生的增量数据变化,用于修改全文索引时的增量填充。N表主键为(N_DOCID),用于保存原表记录rowid和新词条记录的docid的映射关系,N_DOCID 是 unique 的;D 表主键为(DOCID),保存了所有将被删除的 docid,被删除的 docid 即将不能通过全文索引查询到。另外,如果原表有自定义聚集主键,那么P 表和 N 表会将该自定义聚集主键列“复制”到各自表中。
DM 全文索引创建的过程中,用户可以为分词器定义分词参数,即控制分词器分词的数量,包括 5 种分词参数:

  1. CHINESE_LEXER,中文最少分词;
  2. CHINESE_VGRAM_LEXER,机械双字分词;
  3. CHINESE_FP_LEXER,中文最多分词;
  4. ENGLISH_LEXER,英文分词;
  5. DEFAULT_LEXER,默认分词,为中文最少分词。
    指定中文分词参数可以切分英文,但是指定英文分词参数不可以切分中文,所以使用英文分词算法对中文文本进行分词时,分词结果将为空。
    经过全文的创建和更新后,可以进行全文检索,全文检索支持的检索方式有:
  6. 在 CONTAINS 谓词内支持 AND、OR 和 AND NOT 的短语查询组合条件,例如查询address 表中地址在洪山区太阳城的记录:SELECT * FROM person.address WHERE CONTAINS(address1, ‘洪山区’ AND ‘太阳城’);
  7. 全文检索支持单词或者句子的检索, 例如查询 address 表中地址在江汉区发展大道的记录:SELECT * FROM person.address WHERE CONTAINS(address1, ‘江汉区发展大道’);
  8. 不支持模糊方式的全文检索,例如查询“江汉区*”。
  9. 检索条件子句可以和其他子句共同组成 WHERE 的检索条件,例如查询 address表中地址在武汉市洪山区的记录。
    SELECT * FROM person.address WHERE CONTAINS(address1, ‘洪山区’) AND city LIKE ‘%武汉市%’;
    在这里插入图片描述

如上图所示,DM 全文检索时对查询的文本做了预处理,首先根据词文本进行最少分词,并依据词频信息找出查询关键字,然后对这些关键字进行优先级排序,这样可以在第一次检索时找出所需文本的最小结果集,然后在该结果集的基础上再进行依次筛选,最终获得查询文本,这样能较大地提高查询性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值