一种大规模字符串文本的后缀索引构造方法及装置的制造方法_2

文档序号:9579369阅读:来源:国知局

从后往前扫描字符串,若当前字符与前一扫描字符不相等,则产生一个前驱信息元组,将其输出至外存排序器中;扫描结束后,对所有前驱信息先按桶名称从小到大排序,然后按其在字符串中的位置索引从小到大排序,排序结果保存在前驱信息存储模块中,这样,保证了所有前驱信息元组先按桶名称有序,再按位置索引有序。
[0023]S102:将所有LMS子串压入外存优先级队列容器Q1 ;
具体实现时,可以在LMS后缀识别器的支持下,利用大规模字符串读取器,从后往前读取字符串文本,将字符串中所有LMS子串压入Q1。每个被压入的LMS子串包含信息有:LMS子串的首字符,该LMS子串所对应的后缀,该后缀的类型及后缀在Q1中的插入次序。
[0024]S103:扫描外存容器Q1对L子串排序并命名,并将有序L子串输入到外存容器Q2 ;
具体实现过程可以为,逐一弹出Q1中的元素,直到Q1为空。若当前弹出后缀的前驱是L后缀,将该前驱后缀重新压入Q1 ;同时,若当前弹出的后缀为L后缀,则将该L后缀压入到Q2o
[0025]S104:扫描外存容器Q2对S子串排序并命名,并将S子串中的所有LMS子串的位置索引及其命名信息输入到外存排序器;
具体实现过程可以为,逐一弹出Q2中的元素,直到队列为空。若当前弹出后缀的直接前驱是S后缀,则将该前驱后缀重新压入Q2 ;同时,若当前后缀是LMS后缀,将该LMS后缀及其名字封装在一起,压入外存排序器。
[0026]S105:对外存排序器中所有LMS子串按位置索引进行升序排序,所有LMS子串的名字构成新的字符串T1 ;
S106:根据字符串T1所包含的字符是否均唯一,以直接或递归方式计算新字符串T1的后缀索引;
在这一步,T1规模为T的一半,若T1所包含的字符没有重复字符,则可以直接计算新字符串的后缀索引;否则以T1为输入字符串,转移到S101执行,以递归的方式计算T1的后缀索引。
[0027]S107:扫描字符串T及T1的后缀索引,将T中所有LMS后缀及其优先级压入外存优先级容器Q1中;这里T1的后缀索引即为T中各LMS后缀的优先级;
S108:扫描外存容器Q1,得到有序L后缀,并保存至外存容器Q2 ;
该步骤与步骤S103类似,排序L后缀之前,所有LMS后缀已经输入到Q1中。然后逐一弹出Q1中的元素,查看其前驱是否为L后缀,若是,则将该前驱后缀压入Q1中;同时,若该后缀是L后缀,还必须把该后缀压入Q2中。与步骤S103所不同的是:本步骤是排序L后缀,不需要做命名操作,而S103是排序L子串,需要对各字符子串命名。当容器Q1为空时,得到有序L后缀。
[0028]S109:扫描外存容器Q2,在有序L后缀的基础上,得到有序的S后缀。
[0029]这一步与步骤S104类似,同样是逐一弹出Q2中的元素,查看其前驱是否为S后缀,若是,则将该前驱后缀其压入Q2中;同样,该步骤不需要做命名操作,当Q2为空时,得到有序S后缀。
[0030]S110:以桶为单位,归并L和S后缀,输出字符串T的后缀索引。
[0031]本发明实施例还提供了一种通过计算机外存来构造大规模字符串文本的后缀索引的装置,如图2的结构示意图,包括:
大规模字符串读取器1,用于顺序读取外存大规模字符串文本T ;
后缀前驱信息处理器2,用于生成字符串文本中各后缀的前驱信息,并保存至外存容器(即前驱信息存储模块3);
其中,所述后缀前驱信息为一个元组,该元组包含了该后缀在字符串中的位置信息,前驱字符以及前驱字符距离。这里的前驱字符为:在字符串文本T中,后缀i对应的字符为T[i],T[i]左侧第一个不等于T[i]的字符称为后缀i的前驱字符,例如:某后缀与其前驱字符的距离为“0”,说明该后缀左侧第一个字符为其前驱字符;
前驱信息存储模块3,是一种外存容器,用于存放后缀前驱信息处理器2所输出的各后缀前驱信息;
LMS后缀识别器4,用于识别具体的后缀是否为LMS后缀;
L/S后缀识别器5,用于识别具体的后缀是L还是S后缀;
子串命名单元6,用于在索引构造过程中,对字符子串进行命名,以便字符串规模的收缩;
外存优先级队列容器7,包括容器Ql、Q2,用于在外存上对字符子串或后缀进行排序,每次从该队列弹出的子串或后缀为当如队列中最小或最大子串或后缀;
外存排序器8,也是一种外存容器,可对存入其中的对象按照指定关键字排序;
后缀索引存储模块9,也是一种外存容器,用于存储后缀索引。
[0032]显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
【主权项】
1.一种大规模文本的后缀索引构造方法,其特征在于,所述方法包括: 收缩字符串T,得到新的字符串Tl,T1的规模最多为T的一半; 以直接方式或递归方式构造T1的后缀索引; 扫描T1的后缀索引,得到T的后缀索引; 其中,所述收缩字符串T,得到新的字符串T1的具体过程为: 使用大规模字符串读取器分批读取字符串T,获取T中所有LMS子串,压入外存优先级队列容器Q1中;扫描Q1排序L子串,并使用子串命名单元对L子串和LMS子串进行命名,得到的有序L子串存放于外存优先级队列容器Q2中;扫描Q2中所有L子串排序S子串,并对S子串命名,得到有序S子串;提取S子串中所有LMS子串的名字,这些名字按照LMS子串在原字符串中的索引位置升序构成新的字符串T1 ; 所述构造字符串T1的后缀索引的过程为: 当字符串T1中所有字符都唯一,各字符的名称即为各后缀在后缀索引中的优先级次序,扫描字符串T1,每个索引位置生成相应的二元组:(T[i],i),S卩(字符名称,位置索引),将这些二元组全部压入外存排序器,按照字符名称排序,排序后取各字符对应的索引号存入数组,即得到T1的后缀索引,否则以T1为新的字符串输入参数,用递归方式构造T1的后缀索引; 所述扫描T1的后缀索引,得到T的后缀索引的过程为: 使用大规模字符串读取器读取字符串T,识别其中的LMS后缀,根据T1的后缀索引,给相应的LMS后缀赋予优先级,并压入外存优先级队列容器Q1中; 扫描Q1,得到的有序L后缀,L后缀存放于外存优先级队列Q2中; 扫描Q2,得到有序S后缀序列; 归并所有L和S后缀,得到字符串T的后缀索引。2.根据权利要求1所述的大规模文本的后缀索引构造方法,其特征在于,所述LMS子串的识别方法为,该子串的首字符和尾字符均为LMS字符,首字符与尾字符之间不存在任何LMS字符,则该子串为LMS子串; 所述LMS字符的识别方法为,当后缀为LMS后缀时,则该后缀所对应字符子串的首字符为LMS字符; 所述LMS后缀的识别方法为,若当如后缀为S后缀,且字符串T中与当如后缀相邻的左手边第一个后缀为L后缀,则该后缀为LMS后缀; 所述L子串的识别方法为,子串的首字符为L字符,尾字符为LMS字符,且首字符与尾字符之间不存在任何LMS字符,则该子串为L子串; 所述L/S字符的识别方法为,若某后缀为L或S后缀,则该后缀所对应字符子串的首字符分别称为L或S字符; 所述S子串的识别方法为,子串的首字符为S字符,尾字符为LMS字符,且首字符与尾字符之间不存在任何LMS字符,则该子串为S子串; 所述L后缀、S后缀的识别方法为,假定字符串最后一个字符为‘$’,该字符在整个字符串所包含的字符当中最小并且唯一,为S后缀;然后从字符串文本倒数第二个字符开始往前扫描,若当前字符比前一字符小,则该后缀为S后缀;或当前字符与前一字符相等且前一字符所对应的后缀为S后缀,则该后缀也为S后缀;除上述两种情况之外,后缀被识别为L后缀。3.一种大规模文本的后缀索引构造装置,其特征在于,包括: 大规模字符串读取器(1),用于顺序读取外存大规模字符串文本T ; 后缀前驱信息处理器(2),用于生成字符串文本中各后缀的前驱信息; 其中,所述后缀前驱信息为一个元组,该元组包含了该后缀在字符串中的位置信息,前驱字符以及前驱字符距离;前驱字符为:在字符串文本T中,后缀i对应的字符为T[i],T[i]左侧第一个不等于T[i]的字符称为后缀i的前驱字符; 前驱信息存储模块(3),是一种外存容器,用于存放后缀前驱信息处理器(2)所输出的各后缀前驱信息; LMS后缀识别器(4),用于识别具体的后缀是否为LMS后缀; L/S后缀识别器(5),用于识别具体的后缀是L还是S后缀; 子串命名单元(6),用于在索引构造过程中,对字符子串进行命名,以便字符串规模的收缩; 外存优先级队列容器(7),包括容器Ql、Q2,用于在外存上对字符子串或后缀进行排序,每次从该队列弹出的子串或后缀为当如队列中最小或最大子串或后缀; 外存排序器(8 ),也是一种外存容器,可对存入其中的对象按照指定关键字排序; 后缀索引存储模块(9),也是一种外存容器,用于存储后缀索引。
【专利摘要】本发明公开了一种大规模文本的后缀索引构造方法及装置,本发明在后缀索引构造过程中至少配置大规模字符串读取器,后缀前驱信息处理器,LMS后缀识别器,两个外存优先级队列容器和外存排序器。通过大规模字符串读取器读取字符串,LMS识别器识别字符串中的LMS子串或后缀,外存优先级队列容器实现子串或后缀的排序,最终完成大规模字符串文本的后缀索引构造。在索引构造过程中,利用了低成本的计算机外存资源,使得后缀索引构造不再受限于内存容量;从而在任意一台普通计算机环境下,本发明能完成超过该内存大小的字符串文本数据的后缀索引构造,突破现有后缀索引构造技术方案的局限性。且本发明具有运行速度快、I/O量小和简单易行等优点。
【IPC分类】G06F17/30
【公开号】CN105335481
【申请号】CN201510659972
【发明人】刘伟军, 农革
【申请人】广东顺德中山大学卡内基梅隆大学国际联合研究院, 中山大学
【公开日】2016年2月17日
【申请日】2015年10月14日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1