当前位置: 首页 > 专利查询>苏州大学专利>正文

一种字符串词典的索引方法及系统技术方案

技术编号:9862108 阅读:153 留言:0更新日期:2014-04-02 20:09
本申请公开了一种字符串词典的索引方法,包括:获取待测字符串键P;查询预先建立的包括索引Trie和标签Trie的索引模型,其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号;所述标签Trie上每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。本申请将原有的Patricia Trie分解为一个索引Trie和一个标签Trie,索引Trie只记录字符串标签的首字母,其尾字符串由标签Trie提供,相比于原有的Patricia Trie需要记录全部的字符串标签,大大减少了存储空间。

【技术实现步骤摘要】
一种字符串词典的索引方法及系统
本申请涉及数据索引
,更具体地说,涉及一种字符串词典的索引方法及系统。
技术介绍
近年来,随着互联网和移动设备的迅猛发展和大数据时代的来临,大规模的数据需要处理,其中文本数据占据着越来越大的比重。字符串词典索引作为文本索引的基础,其应用无处不在。如RDF、IP数据包分类、网络搜索引擎和生物信息计算等。但是,现有的字符串词典索引系统,例如将Patricia和B+tree相结合的StringB-tree、B-trie等,均存在空间占用过大的问题,影响了字符串词典索引的发展。因此,需要一种新的字符串词典索引系统,来解决上述问题。
技术实现思路
有鉴于此,本申请提供了一种字符串词典的索引方法及系统,用于解决现有的索引方法空间占用大的问题。为了实现上述目的,现提出的方案如下:一种字符串词典的索引方法,包括:获取待测字符串键P;查询预先建立的包括索引Trie和标签Trie的索引模型;其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号,所述尾字符串为字符串标签除首字母外剩余的字符串;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。优选地,所述索引Trie和所述标签Trie为通过LOUDS表示法进行存储的。优选地,所述索引Trie和所述标签Trie的建立过程如下:将多个字符串键值对进行排序,该排序与字符串在词典中的顺序一致;将所有字符串键值对分成若干组,每组具有若干按照上述顺序排列的字符串键值对;为上述每个组建立一个第一PatriciaTrie;从每个第一PatriciaTrie中选取最大键作为新键,每个第一PatriciaTrie的标识作为对应新键的值;使用所有的新键及新键的值构造一个第二PatriciaTrie,该第二PatriciaTrie作为根节点,与作为叶子节点的所述第一PatriciaTrie形成树状结构;将第一PatriciaTrie和第二PatriciaTrie中的每个PatriciaTrie,分解成一个标签Trie和一个索引Trie;其中:将所述第一PatriciaTrie分解成的索引Trie确定为第一索引Trie,将所述第二PatriciaTrie分解成的索引Trie确定为第二索引Trie,所述索引Trie由多个节点及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。优选地,还包括:将所有的标签Trie以叠加的方式合并为一个统一标签Trie,则所述索引模型中包括的标签Trie为所述统一标签Trie。优选地,所述查询预先建立的包括索引Trie和标签Trie的索引模型,包括:在第二索引Trie中查找第一个不小于所述P的字符串键和对应的值,该过程包括准确查找和下界查找,其中准确查找过程为:1)令第二索引Trie的根节点为当前节点node,P为当前待测字符串P';2)判断P'是否为空字符串;3)如果是,准确查找过程结束,获得当前节点node和当前待测字符串P';4)如果不是,在当前节点node中找到P'的首字母a的子节点;如果找不到,执行步骤3);5)如果找到子节点,根据找到的子节点携带的尾字符串在标签Trie中的节点编号,在所述标签Trie中查找尾字符串s';6)将P'首字母a和s'组成字符串as',判断as'是否是P'的前缀;如果不是,执行步骤3);7)如果是,将子节点作为新的当前节点node,将P'去掉as'前缀后的字符串作为新的当前待测字符串P',返回步骤2):判断P'是否为空字符串;准确查找结束后,得到当前节点node和当前待测字符串P',接下来进行下界查找,下界查找过程如下:1)判断P'是否为空字符串;如果是,则执行下述步骤9);2)如果不是,在当前节点node的字符串标签的首字母标签中查找第一个不小于P'首字母a的首字母标签c;如果没找到,执行下述步骤6);3)如果找到c,同时找到c对应的子节点,根据找到的子节点携带的尾字符串在标签Trie中的节点编号,在所述标签Trie中查找尾字符串s';4)将c和s'组成字符串cs',判断cs'是否不小于P';5)如果是,将c对应的子节点作为新的当前节点node,执行下述步骤9);6)如果不是,查找子节点右边第一个超级兄弟节点;7)如果没找到,提示查找失败;8)如果找到,将找到的超级兄弟节点作为新的当前节点node;9)判断当前节点node中的值是否存在;10)如果不存在,将node的左边第一个子节点作为新的当前节点node,执行所述步骤9);11)如果存在,查找成功,将当前节点node携带的字符串键的值对应的第一索引Trie调入内存,在该第一索引Trie中匹配P;其中,所述步骤6)查找子节点右边第一个超级兄弟节点的过程为:1)查找当前节点node的右边第一个兄弟节点;2)如果查找到,则查找成功,返回该兄弟节点;3)如果没找到,查找当前节点node的父节点;4)如果查找到父节点,将其作为新的当前节点node,执行上述步骤1);5)如果没查找到父节点,则提示查找失败。优选地,所述将所述第二索引Trie中的节点a携带的字符串键的值对应的第一索引Trie调入内存,在该第一索引Trie中匹配P,包括:令第一索引Trie的根节点为当前节点node,P为当前待测字符串P';判断P'是否为空字符串;如果是,将当前节点b携带的值作为所述待测字符串键P的值;如果不是,则在当前节点node中找到对应P'首字母a的子节点;如果找不到,提示查找失败;如果找到子节点,根据找到的子节点携带的尾字符串在标签Trie中的节点编号,在所述标签Trie中查找尾字符串s';将P'首字母a和s'组成字符串as',判断as'是否是P'的前缀;如果不是,提示查找失败;如果是,则将该节点作为新的当前节点node,将P'去掉as'前缀后的字符串作为新的当前待测字符串P',执行判断P'是否为空字符串这一步骤。一种字符串词典的索引系统,包括:获取单元,用于获取待测字符串键P;查询单元,用于查询预先建立的包括索引Trie和标签Trie的索引模型;其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号,所述尾字符串为字符串键除首字母外剩余的字符串;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。优选地,还包括:索引模型建立单元,用于建立索引Trie和标签Trie,其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号,所述尾字符串为字符串标签除首字母外剩余的字符串;所本文档来自技高网...
一种字符串词典的索引方法及系统

【技术保护点】
一种字符串词典的索引方法,其特征在于,包括:获取待测字符串键P;查询预先建立的包括索引Trie和标签Trie的索引模型;其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号,所述尾字符串为字符串标签除首字母外剩余的字符串;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。

【技术特征摘要】
1.一种字符串词典的索引方法,其特征在于,包括:获取待测字符串键P;查询预先建立的包括索引Trie和标签Trie的索引模型;其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号,所述尾字符串为字符串标签除首字母外剩余的字符串;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。2.根据权利要求1所述的方法,其特征在于,所述索引Trie和所述标签Trie为通过LOUDS表示法进行存储的。3.根据权利要求1所述的方法,其特征在于,所述索引Trie和所述标签Trie的建立过程如下:将多个字符串键值对进行排序,该排序与字符串在词典中的顺序一致;将所有字符串键值对分成若干组,每组具有若干按照上述顺序排列的字符串键值对;为上述每个组建立一个第一PatriciaTrie;从每个第一PatriciaTrie中选取最大键作为新键,每个第一PatriciaTrie的标识作为对应新键的值;使用所有的新键及新键的值构造一个第二PatriciaTrie,该第二PatriciaTrie作为根节点,与作为叶子节点的所述第一PatriciaTrie形成树状结构;将第一PatriciaTrie和第二PatriciaTrie中的每个PatriciaTrie,分解成一个标签Trie和一个索引Trie;其中:将所述第一PatriciaTrie分解成的索引Trie确定为第一索引Trie,将所述第二PatriciaTrie分解成的索引Trie确定为第二索引Trie,所述索引Trie由多个节点及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。4.根据权利要求3所述的方法,其特征在于,还包括:将所有的标签Trie以叠加的方式合并为一个统一标签Trie,则所述索引模型中包括的标签Trie为所述统一标签Trie。5.根据权利要求3所述的方法,其特征在于,所述查询预先建立的包括索引Trie和标签Trie的索引模型,包括:在第二索引Trie中查找第一个不小于所述待测字符串键P的字符串键和对应的值,该过程包括准确查找和下界查找,其中准确查找过程为:1)令第二索引Trie的根节点为当前节点node,P为当前待测字符串P';2)判断P'是否为空字符串;3)如果是,准确查找过程结束,获得当前节点node和当前待测字符串P';4)如果不是,在当前节点node中找到P'的首字母a的子节点;如果找不到,执行步骤3);5)如果找到子节点,根据找到的子节点携带的尾字符串在标签Trie中的节点编号,在所述标签Trie中查找尾字符串s';6)将P'首字母a和s'组成字符串as',判断as'是否是P'的前缀;如果不是,执行步骤3);7)如果是,将子节点作为新的当前节点node,将P'去掉as'前缀后的字符串作为新的当前待测字符串P',返回步骤2):判断P'是否为空字符串;准确查找结束后,得到当前节点node和当前待测字符串P',接下来进行下界查找,下界查找过程如下:1)判断P'是否为空字符串;如果是,则执行下述步骤9);2)如果不是,在当前节点node的字符串标签的首字母标签中查找第一个不小于P'首字母a的首字母标签c;如果没找到,执行下述步骤6);3)如果找到c,同时找到c对应的子节点,根据找到的子节点携带的尾字符串在标签Trie中的节点编号,在所述标签Trie中查找尾字符串s';4)将c和s'组成字符串cs',判断cs'是否不小于P';5)如果是,将c对应的子节点作为新的当前节点node,执行下述步骤9);6)如果不是,查找子节点右边第一个超级兄弟节点;7)如果没找到,提示查找失败;8)如果找到,将找到的超级兄弟节点作为新的当前节点node;9)判断当前节点node中的值是否存在;10)如果不存在,将node的左边第一个子节点作为新的当前节点n...

【专利技术属性】
技术研发人员:张广泉张国清戎玫顾玉磊
申请(专利权)人:苏州大学
类型:发明
国别省市:江苏;32

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

1