一种海量数据多维排序搜索方法与流程

文档序号:11251032阅读:663来源:国知局
一种海量数据多维排序搜索方法与流程

本发明涉及数据搜索技术领域,尤其涉及一种海量数据多维排序搜索方法。



背景技术:

无线体域网的信息隐私包括用户的各项生理参数,大量的隐私数据被存储在云服务器中,密文检索技术是解决云环境隐私安全问题的有效方法。当前的数据保护技术中,加密算法能够较好地保护数据,但加解密计算会对系统效率产生极大的影响;数据拆分重装策略的效率较高,但其对云平台的结构和物理层次依赖性过大。因此,找到数据的实用性与安全性的平衡点是云存储平台应用中最为关键的问题。

clearm提出基于多身份、多密钥的层次全同态加密方案,满足多用户共享,不同身份密文计算。qianh提出了适用于多机构系统的访问控制方案。clearm提出基于身份的纯全同态加密方案,满足多用户共享和不同身份、不同属性密文计算。songdx提出了一种加密方式和密文顺序检索架构,该方法证明,在只知道密文的情况下,云存储服务提供商不能截取任何明文的信息。但是,该方案的加密和查询算法的时间复杂度为o(n),其中n表示文档长度。gohej形式化的定义了安全索引结构-z索引,该索引模型通过伪随机函数和布隆过滤器(bloomfilter)实现,可以抵抗适应性选择关键字攻击,然而,z索引并不提供查询排序机制,若查询词出现在大量文档中,用户需要从大量的结果集中筛选所需文档。通过在倒排表中加入相关度分数,wangc实现了支持结果集排序的密文检索方法。在查询阶段,云服务器仅需返回与查询条件匹配的前k个相关文档,而不是所有满足条件的文档,这不但减少了带宽的消耗,还改善了用户体验。然而,上述工作仅能解决单关键词密文检索的问题,即用户在一次查询中仅能提交一个查询检索词。

为了更全面的表达用户的查询意图,多关键字检索技术应运而生。sunw提出一种新的密文检索框架mrse以解决多关键字密文检索问题。在索引建立阶段,每个文档被表示成一个二进制向量,其中每一位的值代表当前文档是否包含该关键字。查询向量以同样的方式被表示成一个二进制向量。云服务器通过执行矩阵运算和安全k近邻算法获取排序的结果集并返回给用户。然而,mrse框架的查询响应时间随着文档集的增长而增长,难以适应大数据时代数据迅速增长的需求。

为了加快查询的速度,树形结构普遍应用于索引的构建,比如在数据库领域,leslieh使用b树来加快查询速度,ciacciap通过构造m树加快了对度量空间的索引过程。田雪等人将密文检索框架mrse进行优化,提出一种新型的密文索引结构:mrse-ss,将相似查询树结构引入密文索引框架用于提升多关键字排序检索的效率,并且提出一种动态聚类算法dk-medoids,聚类过程随文档量增加而动态变化,适用于云计算环境下的密文检索场景,但是在该方法中在构建超球体时最坏的时间复杂度会达到o(n2),并且若在查询算法传递回文档时,若最相关的超球体中文档数少于所查询的k个,则该方法不能解决这个问题。



技术实现要素:

针对上述问题,本发明的目的在于提供一种快速的海量数据多维排序搜索方法。

为了解决背景技术中所存在的问题,本发明的技术方案为:

一种海量数据多维排序搜索方法,包括以下步骤:

1)根据数据库中文档的领域相关度,将文档进行聚类,得到聚类组织相似查询树;

2)将不同的领域的聚类组织进行聚类,形成相似查询树;

3)获取用户提交的查询向量,将查询向量表示为查询超球体;

4)根据查询超球体与相似查询树中节点所代表的超球体的位置关系,获取与查询超球体交集最多的超球体,并对该超球体向下一层节点寻找,直到叶子节点,并查询其左右邻居节点,按照相关比例返回节点中k个最相关的文档列表以及文档向量。

所述步骤1)具体为:

1.1、根据数据库中文档的领域相关度,对相同领域的文档生成一个多维的文档向量dc;

1.2、设置单个槽中元素的门限值t;

1.3、初始化文档向量dc中选择向量值最大和最小的对象,分别做所有槽的上下界;

1.4、确定初始k值,将文档向量dc化为等大小区间槽,利用公式(1)将所有文档集放入对应槽中,选取其中与槽中心点最近的对象作为该聚类中心,所述公式(1):

其中,p为文档集中的点,omax为文档集中向量最大的对象,omin为文档集中向量最小的对象;

1.5、检测所有槽中成员元素是否超过门限值t,若存在超过门限值t,则对该槽继续进行聚类,生成子槽。

所述步骤1.3与1.4之间还包括步骤:

对于新加入文档向量dc的文档对象,检测与各个槽之间的距离,决定加入槽,并与当前中心点比较,若其与槽中心点向量差小于当前中心点,则将该对象替换为中心点,若超出原聚类的上下界则以该对象作为中心点,按比例建立新槽。

所述步骤2)包括将聚类组织相似查询树中叶子节点加入指向其左右兄弟节点指针。

所述步骤4)具体包括:

4.1、服务器首先计算查询超球体和根节点各个超球体之间的关系,得到交集最多的某个超球体;

4.2、根据得到的超球体,继续向下一层节点寻找交集最多的超球体;

4.3、重复步骤4.2,直到叶子节点,计算叶子节点和查询超球体球心oqw之间的距离,获得与查询超球体交集最大的叶子节点;

4.4、查找所述相交的叶子节点的左右邻居节点,按比例范围最近的k个文档及列表。

与现有技术相比较,本发明的有益效果为:

本发明提供了一种海量数据多维排序搜索方法,以mrse-ss基础算法结构进行算法实现提出了动态的dik-medoids算法,在实际部署中通过对文档数量、关键词个数、槽个数三个影响初始化执行时间的变量取不同的值,使dik-medoids算法在初始化效率较传统的dk-medoids算法在初始构建的时间消耗上有了较大的提升,在大数据的环境下dik-medoids算法具有明显的优势,提高了数据的查询速度已经准确度。

附图说明

图1是本发明海量数据多维排序搜索方法流程图;

图2是本发明相似查询树的结构图;

图3是本发明实验数据图,图中(a)为文档个数变化实验图,(b)为关键词个数变化实验图,(c)为簇个数变化实验图。

具体实施方式

下面结合附图对本发明做详细描述。

本发明提供了一种海量数据多维排序搜索方法,在云存储的环境下提出动态区间聚类算法dik-medoids,该方法在初始化文档集时,取文档集中最大和最小文档的向量差,等量的划分为k个槽,槽的大小为超球体的直径,把最接近槽中间向量的文档设置为超球体的中心,每个文档槽的大小视文档集的多少而定,随着文档数量的增加,对槽进行动态划分。同时使用新型的相似查询树将不同的领域的聚类组织起来,通过控制上级超球体中子节点超球体的数量,动态调整结构以达到新增体积最小的目标,直至生成根节点,与mrse-ss在查询阶段相同,将用户提交的查询向量表示为一个超球体,云服务器通过判断查询向量所代表的超球体与相似查询树中节点所代表的超球体之间的位置关系进行判定,仅当查询向量与某领域构成的超球体有交集时才将该领域纳入结果集评价范围,递归执行这一步骤直至叶子节点,但在叶子节点本文算法不仅查询当前节点,并查询其左右邻居节点,按照相关比例返回节点中k个最相关的文档列表。因此聚类过程随文档量增加而动态变化,并且初始化时间复杂度为o(1),适用于大数据环境下的密文检索场景.通过实验证明该方法随着文档的线性增加,消耗的时间呈线性变化,且在很低的范围之内,表明dik-medoids算法在初始化效率较传统的dk-medoids算法有了较大的提升。

如图1所示,包括以下步骤:

1)根据数据库中文档的领域相关度,将文档进行聚类,得到聚类组织相似查询树;

具体为:

1.1、根据数据库中文档的领域相关度,对相同领域的文档生成一个多维的文档向量dc;

1.2、设置单个槽中元素的门限值t;

1.3、初始化文档向量dc中选择向量值最大和最小的对象,分别做所有槽的上下界;

1.4、确定初始k值,将文档向量dc化为等大小区间槽,利用公式(1)将所有文档集放入对应槽中,选取其中与槽中心点最近的对象作为该聚类中心,所述公式(1):

其中,p为文档集中的点,omax为文档集中向量最大的对象,omin为文档集中向量最小的对象;

对于新加入文档向量dc的文档对象,检测与各个槽之间的距离,决定加入槽,并与当前中心点比较,若其与槽中心点向量差小于当前中心点,则将该对象替换为中心点,若超出原聚类的上下界则以该对象作为中心点,按比例建立新槽。

1.5、检测所有槽中成员元素是否超过门限值t,若存在超过门限值t,则对该槽调用dik-medoids算法继续进行聚类,生成子槽。

2)将不同的领域的聚类组织进行聚类,形成相似查询树;

相似查询树是r树的变形,它采用超球体进行空间的分割,在二维平面上,相似查询树从下到上构建而成,上层节点为恰好覆盖下层节点的所有元素的超球体,每个节点由一个中心点和半径表示,若该节点为叶子节点,则中心点即为文档向量值,若为中间节点则表示超球体的球心。

因为算法mrse-ss中对于查询返回的k个文档只是查询与查询超球体交集最大的超球体,对于有小部分交集的超球体并没有返回查询内容,然而用户所需文档可能在交集较小的超球体中出现,这样mrse-ss就不能满足用户的需求,因此本发明算法对其进行改进,将ss树的叶子节点加入指向其左右兄弟节点指针,因为当查询超球体与文档超球体所有交集最大时,其该文档超球体所相邻的超球体也必然有所交集,因为每个相邻超球体都是较相似的,所以当查询至叶子节点时交集最大的超球体,同时查询其k个兄弟节点,按比例返回文档列表,其数据结构如图2所示。

3)获取用户提交的查询向量,将查询向量表示为查询超球体;

4)根据查询超球体与相似查询树中节点所代表的超球体的位置关系,获取与查询超球体交集最多的超球体,并对该超球体向下一层节点寻找,直到叶子节点,并查询其左右邻居节点,按照相关比例返回节点中k个最相关的文档列表以及文档向量。

具体包括:

4.1、服务器首先计算查询超球体和根节点各个超球体之间的关系,得到交集最多的某个超球体;

4.2、根据得到的超球体,继续向下一层节点寻找交集最多的超球体;

4.3、重复步骤4.2,直到叶子节点,计算叶子节点和查询超球体球心oqw之间的距离,获得距离最近的叶子节点;

相交的判定方法,如图和公式所示,

(rqw+rn)>d(oqw,qn)>|rqw-rn|

包含的判定方法,如图和公式所示,

d(oqw,on)<|rqw-rn|

不相交的判定方法,如图和公式所示

d(oqw,on)>(rqw+rn);

4.4、查找所述相交的叶子节点的左右邻居节点,按比例范围最近的k个文档及列表。

本发明提出一种动态聚类算法dik-medoids,在文档初始化聚类时,通过该文档集的最大和最小文档向量差,等量的划分为k个槽,槽的大小为超球体的直径,把最接近槽中间向量的文档设置为超球体的中心,每个文档槽的大小视文档集的多少而定,随着文档数量的增加,对槽进行动态划分。并且提出改进的相似查询树将不同的领域的聚类组织起来,与原算法不同的使在叶子节点本文算法不仅查询当前节点,并查询其左右邻居节点,按照相关比例返回节点中k个最相关的文档列表。

验证实验:

为了测试动态区间聚类算法dik-medoids在真实数据集上的性能,建立了实验平台验证算法的效率。测试平台建立在intelcoree3-v12303.30gz的windows上,数据集采用模拟的不同的文档集个数和关键词数量,分别为256-8192篇文档数量,10-50个关键词。图3(a)(b)(c)展示了dk-medoids算法与dik-medoids算法的在文档个数变化、关键词个数变化以及簇个数变化下效率对比情况。

在图(a)中,当文档集合的个数呈指数增加时,dk-medoids算法的初始索引响应时间也是呈指数级增加,而dik-medoids算法的响应时间近似线性增加并且时间很快,在文档数为3000个时,dk-medoids算法运行时间为20s左右,但是dik-medoids算法仅为0.13s;在图(b)中,文档数目固定为2000个时,当文档中关键词数目变化时,dk-medoids算法和dik-medoids算法的初始索引时间相差也极大,但是在关键词数量在40以内时,两个算法时间变化都很稳定,当关键词多于40时,dk-medoids算法时间变化较明显,而dik-medoids算法时间依然稳定在很低的范围之内,说明dik-medoids算法的初始时间不随文档中关键词数量变化而变化;在图(c)中,文档数目依然固定为2000并且关键词数量为20个,当初始簇的个数变化时,dk-medoids算法随着数目增多呈变化递减(少于30时呈指数递减,多于30时呈线性递减)。dik-medoids算法时间随着槽的数目增多而呈线性增长,在本次实验时模拟文档都采用归一化处理,并且数目控制在10000以内,因为文档数目过大时(例如100000),dk-medoids算法时间将变得无法估计,在长时间内都不能运算完毕,但是dik-medoids算法依然在很短时间内运算完毕(1s之内),这说明dik-medoids算法在时间效率方面要远远高于dk-medoids算法,但是dik-medoids算法在运行中也出现无法解释的问题,初始文档多数都集中在某一个槽内,这样使dik-medoids算法的查询效率要远远小于dk-medoids算法。

综合了以上对本发明进行的正确性和效率的分析,可以看出dik-medoids算法,具有如下特点:

dik-medoids算法执行时间上远远小于dk-medoids算法,在三个影响因子(文档数量、关键词个数、槽个数)的不同取值下,dik-medoids算法平均执行时间不足1s,针对大量的数据集来说,dik-medoids算法具有明显的优势。

对dik-medoids算法来说影响较大的因素是初始槽的个数,随着槽的个数的增加算法的执行时间也线性增加,而对dk-medoids算法来说文档数量是影响执行时间最重要的因素,说明dk-medoids算法适用于数据集大且槽个数偏小的情况。

dik-medoids算法由于在分槽时过多的数据集中在某一个槽中,导致在执行效率上不如dk-medoids算法出色。

对于本领域技术人员而言,显然能了解到上述具体实施例只是本发明的优选方案,因此本领域的技术人员对本发明中的某些部分所可能作出的改进、变动,体现的仍是本发明的原理,实现的仍是本发明的目的,均属于本发明所保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1