[发明专利]倒排索引中键值对的处理方法及处理系统有效
申请号: | 201610042152.7 | 申请日: | 2016-01-21 |
公开(公告)号: | CN106991102B | 公开(公告)日: | 2021-06-08 |
发明(设计)人: | 郑杨 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22 |
代理公司: | 深圳翼盛智成知识产权事务所(普通合伙) 44300 | 代理人: | 黄威 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 索引 键值 处理 方法 系统 | ||
1.一种倒排索引中键值对的处理方法,其特征在于,包括:
将键值对中的值按照预设格式生成项目;
将所述项目依据其权重进行排序,所述权重包括:原始类型中的值、和非原始类型中的权重;
将所述排序后的项目存储在内存块中,并生成指向所述内存块的指针,其中所述内存块用于形成内存数组;
将所述键值对中的键与所述指针存储为指针数组;将所述指针数组与所述内存数组构成索引列表;
将多个键值对所构成的索引列表存储在哈希图中,以形成倒排索引;
其中,将所述排序后的项目存储在内存块中,并生成指向所述内存块的指针包括:
设置所述内存块的项目链表,所述项目链表包括链表头和项目列表,所述链表头用于存储项目容量、和偏移量,所述项目列表用于存储多个项目、和每个项目的长度;
将所述排序后的项目存储在所述内存块中,具体包括:根据所述项目容量,将所述排序后的项目存储在连续的内存块中,所述连续的内存块用于形成有序的内存数组;
在存储过程中,根据每个项目的长度,生成所述项目对应的当前偏移量,以更新所述链表头中的偏移量,所述偏移量包括:位于链表首位的项目的偏移量、位于链表中间的项目的偏移量、和位于链表尾部的项目的偏移量;以及
生成指向所述内存块的指针,具体包括:根据所述链表头中的偏移量生成指向所述内存块的指针。
2.如权利要求 1 所述的处理方法,其特征在于,将键值对中的值按照预设格式生成项目,包括:
判断所述键值对中的值的类型是否是原始类型;
若是原始类型,则获取所述值的数据类型、值、和超时时间戳,以生成项目,其中原始类型的值用作所述项目的权重;
若不是原始类型,则获取所述值的权重、值、和超时时间戳,以生成项目。
3.如权利要求 1 所述的处理方法,其特征在于,在形成倒排索引之后,还包括:
接收插入指令,并获取待插入项目的权重值;
通过二分查找法确定所述待插入项目的插入位置;
判断所述插入位置对应的内存块是否存在空间;以及
若存在空间,则将所述待插入项目插入至所述插入位置;或
若不存在空间,则为所述待插入项目分配新的内存块。
4.如权利要求 1 所述的处理方法,其特征在于,在形成倒排索引之后,还包括:
接收删除指令,并获取待删除项目的权重值;
通过二分查找法查找所述待删除项目的内存块的位置;
判断是否查找成功;以及
若查找成功,则从所述内存块中删除所述待删除项目。
5.如权利要求4所述的处理方法,其特征在于,若查找成功,则从所述内存块中删除所述待删除项目,之后还包括:
判断执行了删除指令的内存块是否为空;以及
若为空,则删除所述内存块。
6.如权利要求 1 所述的处理方法,其特征在于,在形成倒排索引之后,还包括:
接收查询指令;
获取查询指令中的键和截取个数;
根据所述键定位对应的内存数组;以及
根据所述截取个数对内存数据中的项目进行读取,以获取其中的值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610042152.7/1.html,转载请声明来源钻瓜专利网。