【技术实现步骤摘要】
一种字符串词典的索引方法及系统
本申请涉及数据索引
,更具体地说,涉及一种字符串词典的索引方法及系统。
技术介绍
近年来,随着互联网和移动设备的迅猛发展和大数据时代的来临,大规模的数据需要处理,其中文本数据占据着越来越大的比重。字符串词典索引作为文本索引的基础,其应用无处不在。如RDF、IP数据包分类、网络搜索引擎和生物信息计算等。但是,现有的字符串词典索引系统,例如将Patricia和B+tree相结合的StringB-tree、B-trie等,均存在空间占用过大的问题,影响了字符串词典索引的发展。因此,需要一种新的字符串词典索引系统,来解决上述问题。
技术实现思路
有鉴于此,本申请提供了一种字符串词典的索引方法及系统,用于解决现有的索引方法空间占用大的问题。为了实现上述目的,现提出的方案如下:一种字符串词典的索引方法,包括:获取待测字符串键P;查询预先建立的包括索引Trie和标签Trie的索引模型;其中:所述索引Trie由多个节点,及节点之间路径上的字符串标签首字母组成,各节点中携带字符串键的值及字符串标签的尾字符串在标签Trie中的节点编号,所述尾字符串为字符串标签除首字母外剩余的字符串;所述标签Trie上的各节点具有唯一编号,且每个节点到根节点之间的路径上存储的字符串,为所述索引Trie上携带当前节点编号的节点对应的字符串标签的尾字符串。优选地,所述索引Trie和所述标签Trie为通过LOUDS表示法进行存储的。优选地,所述索引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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。