【技术实现步骤摘要】
一种实时数据流的后缀数组索引方法及装置
本专利技术涉及数据索引领域,更具体的,涉及一种实时数据流的后缀数组索引方法及装置。
技术介绍
随着信息化的发展和大数据时代的来临,数据量呈爆炸式增长,为了支撑海量数据环境下数据的快速检索,数据索引的设计成为至关重要的环节。在数据索引领域,倒排索引已得到广泛应用,但其对于非自然语言数据的索引准确性容易受分词效果影响,难以保证100%的查全率。不同于倒排索引,后缀数组索引无需对数据分词,可对异构数据无差别地创建索引,不仅适用于文本等自然语言数据,而且适用于二进制数据、生物信息、网络数据包等非自然语言数据,具有较好的普适性。对于线上系统而言,实时数据流种类多样,后缀数组索引可保证对异构数据的准确索引,实现100%的查全率。然而,后缀数组索引创建效率受后缀数组构造速度的限制,且需要占用较大的内存空间。段的大小和数量也应有所平衡,单个索引过大将导致索引效率低下,索引个数过多将导致检索效率低下。鉴于后缀数组索引速度受限和空间占用大等缺陷,有必要通过相应的策略优化数据索引流程,以提升实时数据流的后缀数组索引效率。
技术实现思路
本专利技术为了解决倒排索引准确性容易受分词效果的影响,以及对异构数据的索引问题,提供了一种实时数据流的后缀数组索引方法,以及应用该索引方法的装置,其可在无需分词的情况下实时索引异构数据,并采用异步方式生成索引,加快响应时间。为实现上述专利技术目的,采用的技术方案如下:一种实时数据流的后缀数组索引方法,所述后缀数组索引方法包括以下步骤:步骤1:服务端接收实时数据流,从实时数据流提取源数据,将源数据预处理为包含一个 ...
【技术保护点】
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所述的实时数据流的后缀数组索引方法,其特征在于:为防止索引个数过多影响检索效率,提供索引段合并机制;所述后缀数组索引段合并采用源数据合并后重新构造后缀数组的方式实现,其具有线性时间复杂度;所述后缀数组索引合并过程中使用副本段保证在合并过程中不影响已有数据的检...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。