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

一种实时数据流的后缀数组索引方法及装置制造方法及图纸

技术编号:20272513 阅读:33 留言:0更新日期:2019-02-02 03:39
本发明专利技术公开了一种实时数据流的后缀数组索引方法,该方法步骤:服务端接收实时数据流,提取源数据,将其预处理为文档;解析文档,将文档按域分发,各个域接收源数据,并启动独立线程进行数据索引和存储;一个域由多个段组成,域对象接收源数据后直接将其写入段中,并设置段源数据更新信号,即可返回响应;若文档所有域均返回响应,则向客户端返回响应信息;后缀数组构造工具在后台监听段源数据更新信号,自动对段源数据构造后缀数组,生成段后缀数组;段源数据、段后缀数组、段信息连接成完整的后缀数组索引,源数据索引成功。本发明专利技术可在无需分词的情况下实时索引异构数据,并采用异步方式生成索引,加快响应时间,本发明专利技术适用于数据索引领域。

【技术实现步骤摘要】
一种实时数据流的后缀数组索引方法及装置
本专利技术涉及数据索引领域,更具体的,涉及一种实时数据流的后缀数组索引方法及装置。
技术介绍
随着信息化的发展和大数据时代的来临,数据量呈爆炸式增长,为了支撑海量数据环境下数据的快速检索,数据索引的设计成为至关重要的环节。在数据索引领域,倒排索引已得到广泛应用,但其对于非自然语言数据的索引准确性容易受分词效果影响,难以保证100%的查全率。不同于倒排索引,后缀数组索引无需对数据分词,可对异构数据无差别地创建索引,不仅适用于文本等自然语言数据,而且适用于二进制数据、生物信息、网络数据包等非自然语言数据,具有较好的普适性。对于线上系统而言,实时数据流种类多样,后缀数组索引可保证对异构数据的准确索引,实现100%的查全率。然而,后缀数组索引创建效率受后缀数组构造速度的限制,且需要占用较大的内存空间。段的大小和数量也应有所平衡,单个索引过大将导致索引效率低下,索引个数过多将导致检索效率低下。鉴于后缀数组索引速度受限和空间占用大等缺陷,有必要通过相应的策略优化数据索引流程,以提升实时数据流的后缀数组索引效率。
技术实现思路
本专利技术为了解决倒排索引准确性容易受分词效果的影响,以及对异构数据的索引问题,提供了一种实时数据流的后缀数组索引方法,以及应用该索引方法的装置,其可在无需分词的情况下实时索引异构数据,并采用异步方式生成索引,加快响应时间。为实现上述专利技术目的,采用的技术方案如下:一种实时数据流的后缀数组索引方法,所述后缀数组索引方法包括以下步骤:步骤1:服务端接收实时数据流,从实时数据流提取源数据,将源数据预处理为包含一个或多个域的文档;步骤2:解析文档,将文档按域分发,各个域接收源数据,并启动独立线程进行数据索引和存储;步骤3:一个域由多个段组成,所述域的域对象接收源数据后不直接创建索引,而是将源数据写入段中,并设置段源数据更新信号,即可返回响应;步骤4:若文档所有域均返回响应,则向客户端返回响应信息;步骤5:后缀数组构造工具在后台监听段源数据更新信号,自动对段源数据构造后缀数组,生成段后缀数组;步骤6:段源数据、段后缀数组、段信息连接成完整的后缀数组索引,源数据索引成功。优选地,所述步骤1,实时数据流的数据类型包括自然语言数据、非自然语言数据;所述的自然语言数据包括文本,所述的非自然语言数据包括二进制数据、生物信息、网络数据包;所述从实时数据流中提取的源数据通过异步方式生成后缀数组索引,以加快响应时间。优选地,所述步骤2,每个域的域对象都是一个单例,独立负责源数据的索引和存储,保证并发操作下的数据安全;所述域分为多个段,所有段的数据构成该域的完整数据,任意两个段之间交集为空;每个段为独立的后缀数组索引,包含段源数据、段后缀数组、段信息三部分;1)段源数据是文档的某个域的源数据,一个段可同时存储不同文档的源数据;2)段后缀数组是由段源数据构造得到的后缀数组,且按后缀项字典排序;3)段信息记录该段所存储数据的元数据信息,包括段源数据大小、段ID、段内各文档ID、文档大小、文档的段内偏移。优选地,所述步骤3,后缀数组索引采用异步方式创建,可分为写入源数据、设置信号量、返回响应、构造后缀数组、生成后缀数组索引五个步骤:1)域对象接收源数据,将源数据写入段中;2)域对象设置信号量,通知有段源数据更新;3)域对象返回响应,表明数据开始索引;4)后缀数组构造工具在后台监听段源数据更新信号,自动对段源数据创建段后缀数组;5)段源数据、段后缀数组、段信息连接成完整的后缀数组索引。优选地,所述步骤4,服务端向客户端返回响应信息,只表明源数据已被接收并开始索引,此时数据还无法检索;所述源数据索引操作在后台自动进行,数据索引成功后更新索引信息,此时数据可被检索;若数据索引失败,后台自动重试,直至数据索引成功。优选地,为防止对同一源数据重复创建后缀数组索引,所述源数据总是写入新的段中,所述的段可分为临时段、动态段、持久段三种类型;1)所述域对象接收源数据后,将源数据写入临时段,所述的临时段为新段,防止对同一源数据重复创建后缀数组索引;2)若临时段大小或个数超过阈值,则所有临时段合并进动态段,动态段暂存于内存;3)若动态段大小超过阈值,则将动态段持久化为持久段,持久段存储在外存;4)若持久段个数超过阈值,则合并持久段,减少索引段个数。优选地,为防止索引个数过多影响检索效率,提供索引段合并机制;所述后缀数组索引段合并采用源数据合并后重新构造后缀数组的方式实现,其具有线性时间复杂度;所述后缀数组索引合并过程中使用副本段保证在合并过程中不影响已有数据的检索,包括以下步骤:1)合并时将所有待合并段的段源数据写入副本段;2)将所有待合并段的段信息合并为副本段的段信息;3)为副本段的段源数据创建段后缀数组;4)副本段操作完成后,通过加锁方式将所有合并段删除,同时副本段升级为正式段,段合并完成。优选地,所述每个段为独立的后缀数组索引,所述的段包括段源数据、段后缀数组、段信息;所述数据检索过程包括以下步骤:1)客户端发起检索请求,指定目标索引库名称、待检索域、检索内容;若无指定待检索域,则待检索域默认为所有域;2)服务端接收并解析检索请求,确定目标索引库,根据待检索域获取相应的域对象;3)每个域对象启动独立的线程完成数据检索,实现对索引的并发检索;4)因为段后缀数组已按字典排序,因此可根据检索内容在各个段的段后缀数组中通过二分查找快速定位源数据在段中的偏移地址,根据偏移地址从段信息中获取相应的文档ID;5)若需获取文档的完整数据,则根据文档ID获取文档的所有域,在域中获取文档域源数据,文档所有域的源数据为文档的完整数据;6)整合各个段的检索结果,得到单个域的检索结果;整合各个域的检索结果,作为最终检索结果返回给客户端。优选地,所述后缀数组构造工具监听到段源数据更新信号后,可根据不同指标选用合适的后缀数组构造算法;所述的指标为字符集种类、数据大小、可用内存空间、可用磁盘空间、CPU核数;所述的后缀数组构造算法选择策略如下:1)检查字符集种类,排除不支持该字符集的算法;2)检查数据大小、可用内存空间;若数据大小不超过4GB,则选择32位版本CPU内存算法;若数据大小超过4GB但不超过可用内存空间,则选择64位版本CPU内存算法;若数据大小超过可用内存空间,则选择外存算法;3)检查可用磁盘空间;若使用32位算法且数据大小超过可用磁盘空间的1/4,则提示失败;若使用64位算法且数据大小超过可用磁盘空间的1/5,则提示失败;4)检查是否多核CPU;若是,选择并行算法;否则,选择串行算法。一种基于以上所述的实时数据流的后缀数组索引方法的装置,包括源数据预处理模块、文档索引管理模块、域索引管理模块、外部工具模块、索引检索模块;1)源数据预处理模块:接收实时数据流,从实时数据流中提取源数据,将源数据预处理为文档,并将文档传递给文档索引管理模块;所述文档由唯一的ID标识,所述文档可包含多个域;2)文档索引管理模块:接收并解析文档,记录文档所拥有的域,将文档按域分发给域索引管理模块,各个域存储实际数据,文档的所有域构成文档的完整数据;3)域索引管理模块:对各个域的数据进行索引和存储;记录文档数据在域中的位置和大小;记录域中的本文档来自技高网...

【技术保护点】
1.一种实时数据流的后缀数组索引方法,其特征在于:所述后缀数组索引方法包括以下步骤:步骤1:服务端接收实时数据流,从实时数据流提取源数据,将源数据预处理为包含一个或多个域的文档;步骤2:解析文档,将文档按域分发,各个域接收源数据,并启动独立线程进行数据索引和存储;步骤3:一个域由多个段组成,所述域的域对象接收源数据后不直接创建索引,而是将源数据写入段中,并设置段源数据更新信号,即可返回响应;步骤4:若文档所有域均返回响应,则向客户端返回响应信息;步骤5:后缀数组构造工具在后台监听段源数据更新信号,自动对段源数据构造后缀数组,生成段后缀数组;步骤6:段源数据、段后缀数组、段信息连接成完整的后缀数组索引,源数据索引成功。

【技术特征摘要】
1.一种实时数据流的后缀数组索引方法,其特征在于:所述后缀数组索引方法包括以下步骤:步骤1:服务端接收实时数据流,从实时数据流提取源数据,将源数据预处理为包含一个或多个域的文档;步骤2:解析文档,将文档按域分发,各个域接收源数据,并启动独立线程进行数据索引和存储;步骤3:一个域由多个段组成,所述域的域对象接收源数据后不直接创建索引,而是将源数据写入段中,并设置段源数据更新信号,即可返回响应;步骤4:若文档所有域均返回响应,则向客户端返回响应信息;步骤5:后缀数组构造工具在后台监听段源数据更新信号,自动对段源数据构造后缀数组,生成段后缀数组;步骤6:段源数据、段后缀数组、段信息连接成完整的后缀数组索引,源数据索引成功。2.根据权利要求1所述的实时数据流的后缀数组索引方法,其特征在于:所述步骤1,实时数据流的数据类型包括自然语言数据、非自然语言数据;所述的自然语言数据包括文本,所述的非自然语言数据包括二进制数据、生物信息、网络数据包;所述从实时数据流中提取的源数据通过异步方式生成后缀数组索引,以加快响应时间。3.根据权利要求1所述的实时数据流的后缀数组索引方法,其特征在于:所述步骤2,每个域的域对象都是一个单例,独立负责源数据的索引和存储,保证并发操作下的数据安全;所述域分为多个段,所有段的数据构成该域的完整数据,任意两个段之间交集为空;每个段为独立的后缀数组索引,包含段源数据、段后缀数组、段信息三部分;1)段源数据是文档的某个域的源数据,一个段可同时存储不同文档的源数据;2)段后缀数组是由段源数据构造得到的后缀数组,且按后缀项字典排序;3)段信息记录该段所存储数据的元数据信息,包括段源数据大小、段ID、段内各文档ID、文档大小、文档的段内偏移。4.根据权利要求1所述的实时数据流的后缀数组索引方法,其特征在于:所述步骤3,后缀数组索引采用异步方式创建,可分为写入源数据、设置信号量、返回响应、构造后缀数组、生成后缀数组索引五个步骤:1)域对象接收源数据,将源数据写入段中;2)域对象设置信号量,通知有段源数据更新;3)域对象返回响应,表明数据开始索引;4)后缀数组构造工具在后台监听段源数据更新信号,自动对段源数据创建段后缀数组;5)段源数据、段后缀数组、段信息连接成完整的后缀数组索引。5.根据权利要求1所述的实时数据流的后缀数组索引方法,其特征在于:所述步骤4,服务端向客户端返回响应信息,只表明源数据已被接收并开始索引,此时数据还无法检索;所述源数据索引操作在后台自动进行,数据索引成功后更新索引信息,此时数据可被检索;若数据索引失败,后台自动重试,直至数据索引成功。6.根据权利要求2所述的实时数据流的后缀数组索引方法,其特征在于:为防止对同一源数据重复创建后缀数组索引,所述源数据总是写入新的段中,所述的段可分为临时段、动态段、持久段三种类型;1)所述域对象接收源数据后,将源数据写入临时段,所述的临时段为新段,防止对同一源数据重复创建后缀数组索引;2)若临时段大小或个数超过阈值,则所有临时段合并进动态段,动态段暂存于内存;3)若动态段大小超过阈值,则将动态段持久化为持久段,持久段存储在外存;4)若持久段个数超过阈值,则合并持久段,减少索引段个数。7.根据权利要求3所述的实时数据流的后缀数组索引方法,其特征在于:为防止索引个数过多影响检索效率,提供索引段合并机制;所述后缀数组索引段合并采用源数据合并后重新构造后缀数组的方式实现,其具有线性时间复杂度;所述后缀数组索引合并过程中使用副本段保证在合并过程中不影响已有数据的检...

【专利技术属性】
技术研发人员:陈浩宇农革徐文涛
申请(专利权)人:中山大学
类型:发明
国别省市:广东,44

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

1