通过16位Trie树实现空间优化的词典索引方法技术

技术编号:18289647 阅读:37 留言:0更新日期:2018-06-24 04:25
本发明专利技术提供一种通过16位Trie树实现空间优化的词典索引方法,该方法包括以下步骤:生成16位Trie树的词典索引;根据用户输入待操作关键字key;根据关键字key当前状态实现索引。在利用映射表结构下构建16位Trie树的词典数据,可对Trie树在空间上进行了优化的同时保证复杂度基本不变,提高了词典构建和索引以及修改删除的速度,并且能够快速检索到关键字key,另外,结合映射表实现16位Trie树的词典索引能够解决一般双数组Trie树词典索引构建起来比较复杂,并且无法随时修改字典,也无法遍历字典的问题。本字典算法可以随时对字典进行修改,遍历,同时在构建时就能够进行排序,经过特定优化后可以作为文件系统或者图片影音的索引使用。

【技术实现步骤摘要】
通过16位Trie树实现空间优化的词典索引方法
本专利技术属于数据结构和信息检索领域,尤其涉及一种通过16位Trie树实现空间优化的词典索引方法。
技术介绍
近年来,随着互联网的快速发展和智能移动设备的大量普及,尤其是大数据时代的到来,越来越多的文本、照片、影音数据需要处理,尤其我们日常生活中会经常遇到越来越繁琐复杂的文本数据,如何对大规模文本数据进行高效地存储和索引成为一个新的挑战。文本索引中较简单的是字符串词典索引,其应用无所不在,如地理信息系统、网络搜索引擎、信息检索系统等。大数据时代的大规模的文本数据同样对字符串词典索引提出了新的挑战。其中Trie树作为一种数据结构经常被用在信息检索领域,帮助我们处理各种数据。传统的Trie树是一种高效的索引树,可以建立有效的数据检索组织结构,其核心思想是以空间换时间,利用字符串的公共前缀来降低查询时间以提高效率,最大限度地减少无谓的字符串比较。但是由于树的很多节点是空节点(稀疏现象严重),所以空间的利用率较低。空间使用效率和查询效率是评判一个索引算法优劣与否的唯一标准,为了减少Trie树结构的空间浪费,同时又保证Trie树查询效率,有很多的学者对此提出了不同的改进策略。目前主流的Trie树算法主要是基于双数组实现的,虽然双数组Trie树算法有效的降低了Trie树结构的空间浪费但是仍然存在着一些问题,首先就是与动态检索方法相比插入时间慢,不能处理频繁的更新。另外一个问题就是双数组的空间效率随着删除数量的增加而降低,因为它保留了删除产生的空元素。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种通过16位Trie树实现空间优化的词典索引方法,本专利技术在结合映射表结构下构建了16位Trie树的词典数据,可对trie树在空间上进行了优化的同时保证复杂度不变,提高了词典构建和索引以及修改删除的速度,并且能够快速检索关键词key,另外,结合映射表实现16位Trie树的词典索引能够解决一般双数组Trie树词典数据索引构建起来比较复杂,并且无法随时修改字典,也无法遍历字典的问题。本字典算法可以随时对字典进行修改,遍历,同时在构建时就能够进行排序。经过特定优化后可以作为文件系统或者图片影音的索引使用。为此,本专利技术实施例公开了一种通过16位Trie树实现空间优化的词典索引方法。该方法包括以下步骤:生成16位Trie树的词典数据;根据用户输入待操作关键字key;根据关键字key当前状态实现索引。优选地,所述的16位Trie树的词典数据中以类bitNode作为节点类,以类bitIndex作为索引类。优选地,所述词典数据中的所有子节点信息的可能组合,用一65536×17大小的二维数组leafsInfoMap映射表来表示。优选地,所述16位Trie树中的当前节点的叶子节点列表信息值用16位大小的leafsInfo表示。优选地,所述16位Trie树中的节点值用nodeValue表示,该值从0到15,用于表示节点所代表的值。优选地,所述16位Trie树中的节点当前存储的叶子节点指针以及数据指针的数组用leafs表示,其中叶子节点指针指向当前节点所对应的叶子节点,数据指针指向当前节点所对应的数据,当叶子节点不存在并且数据指针也不存在时,leafs元素个数为0,当叶子节点存在时,leafs元素个数为叶子节点数量+1(其中数据指针占用一个元素)。优选地,所述16位Trie树中的节点是否为终端结点用endkey表示,0表示为非终端结点,1表示为终端结点。优选地,所述16位Trie树的类bitIndex中用root来表示根节点,若用一个字节表示,则共有256个根节点,可表示为一维数组root[256](共256个元素);若用半个字节表示,则共有16个根节点,可表示为一维数组root[16](共16个元素)(根据不同的表示有不同的根节点,以下对该专利的介绍均采用256个根节点表示,即root[256])。优选地,所述索引包括以下步骤:a.获取到关键字key的第一个字节的值key0,在根节点进行查询(即:root[key0]),若对应的根节点存在,获得该根节点,并执行下一步,否则返回null。b.获取到关键字key的下一个字节的值,并获得该字节的高4位值high_4bits,在上一步骤获得的节点下,通过节点的leafsInfo和leafsInfoMap映射表查询该字节高4位节点(即:leafsInfoMap[leafsInfo][high_4bits]),若对应的根节点存在,获得该高4位节点,并继续以同样方法查询该字节低4位节点,否则返回null。c.获得该字节的低4位值low_4bits,在上一步骤获得的高4位节点下,通过节点的leafsInfo和leafsInfoMap映射表查询该字节的低4位节点,若对应的根节点存在,获得该低4位节点,否则返回null。(这里16位trie树是以一个字节的高4位作为父节点,低4位作为子节点来构建,所以采用的是先查询一个字节的高4位节点,在高4位节点存在的情况下,对该节点的低4位节点进行查询的方法。若构建16位trie树的方法不同,则查询方法也有所不同,这里仅以所述的为例。)d.根据关键字key的长度key_length(以字节为单位)重复b,c步骤,最终获得关键字key所对应的叶子节点。若该节点endkey为1,则该节点为终端结点,表示匹配到了关键字key,返回该节点所对应的value,否则返回null。优选地,所述索引包括:根据关键字key的索引可以获得其对应的结果。本专利技术实例提供的一种通过16位Trie树实现空间优化的词典索引方法能够对trie树在空间上进行了优化的同时保证复杂度基本不变,提高了词典构建和索引以及修改删除的速度,并且能够快速检索到关键字key,另外,结合映射表实现16bitTrie树的词典索引能够解决一般双数组Trie树词典索引构建起来比较复杂,并且无法随时修改字典,也无法遍历字典的问题。本字典算法可以随时对字典进行修改,遍历,同时在构建时就能够进行排序。经过特定优化后可以作为文件系统或者图片影音的索引使用。应当理解,以上总体说明和以下详细说明都是说明性和实例性的,旨在提供对所要求的本专利技术的进一步说明。附图说明图1是本专利技术实施例通过16位Trie树实现空间优化的词典索引方法的流程图。图2是本专利技术实施例根据关键字key的当前状态实现索引的流程框架图。图3是本专利技术实施例中词典数据Trie树的构造图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,一下结合附图及实施例,对本专利技术进行进一步的详细说明。应当理解,此处所述描述的具体实施例仅仅用于解释本专利技术,并不用于限定本专利技术。本专利技术实施例提供的通过16位Trie树实现空间优化的词典索引方法。如图1所示,是本专利技术实施例通过16位Trie树实现空间优化的词典索引方法的流程图。步骤S110:生成16位Trie树的词典数据。获取词典数据,要生成16位Trie的词典数据包括以下具体步骤:步骤S111:构建类bitIndex的对象list,对象list中的数据成员root[256]是256个根节点指针的一维数组,以此为基础构建了list链表。步骤S112:将词典数据中的所有词条和属性信息以key为中本文档来自技高网...
通过16位Trie树实现空间优化的词典索引方法

【技术保护点】
1.通过16位Trie树实现空间优化的词典索引方法,其特征在于,该方法包括以下步骤:生成16位Trie树的词典数据;根据用户输入待操作关键字key;根据关键字key当前状态实现索引。

【技术特征摘要】
1.通过16位Trie树实现空间优化的词典索引方法,其特征在于,该方法包括以下步骤:生成16位Trie树的词典数据;根据用户输入待操作关键字key;根据关键字key当前状态实现索引。2.根据权利要求1所述的方法,其特征在于,所述的16位Trie树的词典数据中以类bitNode作为节点类,以类bitIndex作为管理类。3.根据权利要求1或2所述的方法,其特征在于,类bitNode中公有数据成员包含节点的所有信息。其中主要数据信息有:leafsInfo:叶子节点列表信息;nodeValue:当前节点所代表的值;endkey:当前节点是否为终端结点;leafs:叶子节点以及数据指针。4.根据权利要求1所述的方法,其特征在于,所述词典数据中的所有子节点信息的可能组合,用一65536×17大小的二维数组leafsInfoMap映射表来表示。5.根据权利要求1或3所述的方法,其特征在于,所述16位Trie树中的当前节点的叶子节点列表信息值用16位大小的leafsInfo表示。6.根据权利要求1或3所述的方法,其特征在于,所述16位Trie树中的节点值用nodeValue表示,该值从0到15,用于表示节点所代表的值。7.根据权利要求1或3所述的方法,其特征在于,所述16位Trie树中的节点当前存储的叶子节点指针以及数据指针的数组用leafs表示,其中叶子节点指针指向当前节点所对应的叶子节点,数据指针指向当前节点所对应的数据,当叶子节点不存在并且数据指针也不存在时,leafs元素个数为0,当叶子节点存在时,leafs元素个数为叶子节点数量+1(其中数据指针占用一个元素)。8.根据权利要求1所述或3的方法,其特征在于,所述节点是否为终端结点用endkey表示,0表示为非终端结点,1表示为终端结点。9.根据权利要求1所述或2的方法,其特征在于,类bitIndex中用root来表示根节点,若用一个字节表示,则共有256个根节点,可表示...

【专利技术属性】
技术研发人员:肖英屈晓芳张宇龚德浪
申请(专利权)人:中国计量大学杭州代码哥智能科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1