[发明专利]一种基于cedar双数组字典树算法进行术语匹配的方法有效
申请号: | 201610897558.3 | 申请日: | 2016-10-15 |
公开(公告)号: | CN106528647B | 公开(公告)日: | 2019-07-23 |
发明(设计)人: | 冯泽康 | 申请(专利权)人: | 传神语联网网络科技股份有限公司 |
主分类号: | G06F16/31 | 分类号: | G06F16/31;G06F17/28 |
代理公司: | 北京康盛知识产权代理有限公司 11331 | 代理人: | 宋卉 |
地址: | 430073 湖北省武汉市东湖新技术开发区高新大道99*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是包括包括建索引的步骤,及用索引进行术语查询匹配的步骤;其中,所述建索引的步骤是遍历数据库,获取术语集合,调用cedar双数组字典树插入术语,用以形成术语集合的索引;所述cedar双数组字典树包括一个以基准值和校验值为成员的结构体数组,一个与结构体数组体量相同的循环队列;将cedar双数组算法应用于术语匹配引擎的建索引和根据索引来查询术语,极大地提升了术语匹配引擎的效率,同时该算法也避免了经典的双数组算法libdatrie对大量术语建索引时速度非常慢而不利于快速重建数据的缺点;二叉树作为一种辅助结构,可以用来快速地还原整个双数组字典树。 | ||
搜索关键词: | 一种 基于 cedar 双数 字典 算法 进行 术语 匹配 方法 | ||
【主权项】:
1.一种基于cedar双数组字典树算法进行术语匹配的方法,其特征是包括建索引的步骤,及用索引进行术语查询匹配的步骤;其中,所述建索引的步骤是遍历数据库,获取术语集合,调用cedar双数组字典树插入术语,用以形成术语集合的索引;所述双数组标记为array;遍历到的字符在术语集合中的当前位置值标记为pos,当前位置的字符在双数组中所对应的起始下标值标记为from[pos],当前位置的字符在双数组中所对应的结束下标值标记为to[pos];插入术语中当前位置的字符值标记为key[pos];所述key表示要查询的术语;所述cedar双数组字典树包括一个以基准值和校验值为成员的结构体数组以及一个循环队列;所述循环队列标记为queue,基准值为base,校验值为check,循环队列中第一个元素成员的下标值标记为ehead;所述调用cedar双数组字典树插入术语的步骤包括:(A)根据如下步骤(1.1)‑(1.5)获取插入术语和双数组字典树的初始化数值:(1.1)初始化插入术语第一个字符在双数组中所对应的起始下标值为0,即from[0]=0(1.2)初始化插入术语第一个字符在双数组中所对应的结束下标值,即to[0]=0^key[0],其中^表示异或运算;(1.3)初始化插入术语第二个字符在双数组中所对应的起始下标值,即from[1]=to[0];(1.4)初始化插入术语第一个字符在双数组中对应位置的基准值等于0,即array[0].base=0;(1.5)初始化插入术语第一个字符在双数组中对应位置的校验值等于0,即array[0].check=0;(B)将遍历到的字符在术语集合中的下个字符在双数组中对应起始位置的校验值check作为遍历到的字符在术语集合中的下个字符在循环队列对应起始位置的ehead值,即:queue[from[pos+1]].ehead=array[from[pos+1]].check(C)遍历术语集合中的每个字符,获取插入术语的字符值,根据如下步骤(3.1)‑(3.4)计算得出双数组字典树的基准值base和校验值check:(3.1)将遍历到的字符在术语集合中的下个字符在循环队列对应起始位置的ehead值与遍历到的字符值key[pos]做异或运算,作为遍历到的字符在术语集合中的下个字符在双数组中对应起始位置的基准值base,即:array[from[pos+1]].base=queue[from[pos+1]].ehead^key[pos](3.2)将遍历到的字符在双数组中对应起始位置的基准值base与遍历到的字符值key[pos]做异或运算,作为遍历到的字符在术语集合中的下个字符的结束下标值,即:to[pos+1]=array[from[pos]].base^key[pos](3.3)将遍历到的字符在双数组中对应起始下标值from[pos]作为遍历到的字符在术语集合中的下个字符在双数组中对应结束位置的校验值check,即:array[to[pos+1]].check=from[pos](3.4)将遍历到的字符在双数组中对应结束下标值to[pos]作为遍历到的字符在术语集合中的下个字符在双数组中对应起始下标值,即:from[pos+1]=to[pos]其中,所述用索引进行术语查询匹配的步骤是:遍历术语集合的每一个字符,执行如下步骤(4.1)‑(4.2),以array[to[pos+1]].check=from[pos]为返回条件,直到遍历完,返回该术语在双数组中的位置;(4.1)将遍历到的字符在双数组中对应起始下标值赋值为0,即from[0]=0;(4.2)将遍历到的字符在双数组中对应起始位置的基准值base与遍历到的字符值在术语集合中的下个字符值key[pos+1]做异或运算,作为遍历到的字符在术语集合中的下个字符的结束下标值,即:to[pos+1]=array[from[pos]].base^key[pos+1]。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于传神语联网网络科技股份有限公司,未经传神语联网网络科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610897558.3/,转载请声明来源钻瓜专利网。