CN117828067A - 加密文档的检索方法、装置及系统 - Google Patents
加密文档的检索方法、装置及系统 Download PDFInfo
- Publication number
- CN117828067A CN117828067A CN202410012476.0A CN202410012476A CN117828067A CN 117828067 A CN117828067 A CN 117828067A CN 202410012476 A CN202410012476 A CN 202410012476A CN 117828067 A CN117828067 A CN 117828067A
- Authority
- CN
- China
- Prior art keywords
- keyword
- fingerprint
- hash bucket
- hash
- encrypted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 241000544061 Cuculus canorus Species 0.000 claims abstract description 117
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 52
- 238000003860 storage Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 12
- 239000013598 vector Substances 0.000 description 28
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000009826 distribution Methods 0.000 description 9
- 241000282326 Felis catus Species 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000013549 information retrieval technique Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Abstract
本公开提供加密文档的检索方法、装置及系统,涉及文档检索技术领域,方法包括:接收来自客户端的第一布谷鸟哈希表,其包括存储有第一关键字的第一指纹的第一哈希桶,第一哈希桶的位置利用第一算法对第一关键字计算得到,第一算法使相似的多个关键字对应相同的哈希桶;计算第一指纹与每个加密文档的第二布谷鸟哈希表中第二哈希桶中存在的第二指纹的相似程度,第二哈希桶的位置与第一哈希桶的位置相同,第二布谷鸟哈希表包括第三哈希桶,第三哈希桶的位置利用第一算法对第二关键字计算得到,第三哈希桶中存储第二关键字的第二指纹和反映第二关键字与其所属的加密文档之间的相关程度的相关性分数;根据相似程度和相关性分数,确定匹配的加密文档。
Description
技术领域
本公开涉及文档检索技术领域,尤其是一种加密文档的检索方法、装置及系统。
背景技术
密文检索是云安全领域的一个新兴方向,在云存储中,需要保护文档、索引、查询请求的隐私,需要对三者进行加密。然而,当前信息检索技术所采用的查询方法几乎都基于明文,难以应用到密文状态的文档。因此,需要开辟针对密文的信息检索技术。密文检索即是加密状态下仍能进行信息检索的技术。密文检索领域的检索,必须在密文状态完成。
目前主要采用标准的布隆过滤器来进行检索,布隆过滤器存在不支持动态删除、哈希碰撞概率大、查询性能低、存储空间大等缺陷。
为了解决这一问题,提出了标准布谷鸟过滤器。布谷鸟过滤器是一个增强版的布隆过滤器,其通过增加维度、采用指纹替代布隆过滤器中存储的0和1等方式改进了布隆过滤器。布谷鸟过滤器可以删除元素,查询效率更高,空间利用率更高。布谷鸟过滤器中的哈希算法普遍采用sha256等常见的精确哈希算法。
发明内容
相关技术中,标准布谷鸟过滤器不具有模糊检索(也称模糊查询)功能,实用性很低。检索信息时,经常会出现用户输入错误的情况。例如,用户想检索keyword,但误输入为keywork,这种情况下,布谷鸟过滤器只能检索到与keywork相关的文档,并不能检索到keyword相关的文档。由于keywork是误输入,很可能并不存在与keywork相关的文档,这导致用户在进行密文检索时无法检索到自己实际想检索的内容,影响用户体验。模糊查询功能能够基于keywork,以一定的概率得到keyword所对应的匹配结果,从而提高信息检索的实用性。
为了解决上述问题,本公开实施例提出了如下解决方案。
根据本公开实施例的第一方面,提供一种加密文档的检索方法,包括:接收来自客户端的第一布谷鸟哈希表,所述第一布谷鸟哈希表包括第一哈希桶,所述第一哈希桶中存储有第一关键字的第一指纹,所述第一哈希桶的位置利用第一算法对所述第一关键字计算得到,所述第一算法使相似的多个关键字对应相同的哈希桶;计算所述第一指纹与多个加密文档中每个加密文档的第二布谷鸟哈希表中的第二哈希桶中存在的第二指纹的相似程度,所述第二哈希桶的位置与所述第一哈希桶的位置相同,所述第二布谷鸟哈希表包括第三哈希桶,第三哈希桶的位置利用所述第一算法对第二关键字计算得到,第三哈希桶中存储有所述第二关键字的第二信息,所述第二信息包括所述第二指纹和相关性分数,所述相关性分数用于反映所述第二关键字与其所属的加密文档之间的相关程度;根据所述相似程度和所述相关性分数,确定所述多个加密文档中与所述第一关键字匹配的加密文档。
在一些实施例中,根据所述相似程度和所述相关性分数,确定所述多个加密文档与所述第一关键字匹配的加密文档包括:根据所述相似程度和所述相关性分数,确定所述多个加密文档与所述第一关键字的匹配得分;以及根据所述匹配得分确定所述多个加密文档与所述第一关键字匹配的加密文档。
在一些实施例中,根据所述相似程度与所述相关性分数,确定所述多个加密文档与所述第一关键字的匹配得分包括:响应于所述第一指纹与所述第二指纹的相似程度大于或等于预设值,将所述第二指纹的相关性分数计入与所述第二指纹对应的加密文档的匹配得分;响应于所述第一指纹与一个第二指纹的相似程度小于预设值,不将所述第二指纹的相关性分数计入与所述第二指纹对应的加密文档的匹配得分。
在一些实施例中,与所述第一关键字匹配的加密文档包括所述多个加密文档中所述匹配得分最高的预设数量的加密文档。
在一些实施例中,每个加密文档的第二布谷鸟哈希表根据如下方式确定:基于所述第一算法和一组关键字中的每个关键字计算得到第四哈希桶的位置;响应于所述第四哈希桶中存在空余的第一条目,将该关键字的第二信息存储到所述第一条目;响应于所述第四哈希桶中不存在所述第一条目,基于所述第一算法和该关键字计算第五哈希桶的位置;响应于所述第五哈希桶中存在空余的第二条目,将该关键字的第二信息存储到所述第二条目;响应于所述第五哈希桶中不存在所述第二条目,在所述第四哈希桶和所述第五哈希桶中确定存储有最小的相关性分数的第三条目,将所述第三条目中已存储的第二信息删除,并将该关键字的第二信息存储到所述第三条目。
在一些实施例中,所述一组关键字和所述相关性分数中的至少一个基于词频-逆文本频率算法确定。
在一些实施例中,所述第一算法为p-stable局部敏感哈希算法。
根据本公开实施例的第二方面,提供一种加密文档的检索装置,包括被配置为执行上述任意一个实施例所述的方法的模块。
根据本公开实施例的第三方面,提供一种加密文档的检索装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行上述任意一个实施例所述的方法。
根据本公开实施例的第四方面,提供一种加密文档的检索系统,包括:服务端,包括上述任意一个实施例所述的检索装置;以及客户端,被配置为基于用户输入的所述第一关键字,生成并发送所述第一布谷鸟哈希表。
根据本公开实施例的第五方面,提供一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述任意一个实施例所述的方法。
本公开实施例中,首先,利用第一算法代替标准布谷鸟过滤器通常使用的标准哈希算法,改进了布谷鸟过滤器的映射方式,使得相似的关键字所存储于的哈希桶的位置大概率是相同的,便于后续实现模糊查询功能。通过计算第一关键字的第一指纹和第二哈希桶中存在的第二关键字的第二指纹的相似程度(也即基于密文状态的指纹计算两个明文关键字的相似程度),实现加密状态的第一关键字和第二关键字之间的相似程度计算。最后,改造了标准布谷鸟过滤器的存储结构,标准布谷鸟过滤器只存储指纹,上述实施例存储指纹和相关性分数两者,以便可以基于相似程度和相关性分数两者确定与第一关键字匹配的加密文档,实现密文场景下的模糊查询功能,充分满足用户需求。
此外,通过计算第一指纹与和第一哈希桶位置相同的第二哈希桶中存在的第二指纹的相似程度,可以快捷地在第二布谷鸟哈希表中检索是否有与第一关键字相似的第二关键字。相较于计算第一指纹与第二布谷鸟哈希表中存储的所有第二指纹的相似程度的方式,本公开不仅能够实现模糊检索,还能够提高检索效率。
还应理解,上述实施例是在标准布谷鸟过滤器的基础上改进而来,相较于基于布隆过滤器的密文检索方法,本公开实施例所需的存储空间更小。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本公开一些实施例的加密文档的检索方法的流程示意图。
图2和图3是根据本公开一些实施例的加密文档的检索方法涉及的第一布谷鸟哈希表和第二布谷鸟哈希表的示意图。
图4和图5是根据本公开一些实施例的每个加密文档的第二布谷鸟哈希表的确定过程的示意图。
图6是根据本公开一些实施例的加密文档的检索方法中确定多个加密文档各自的第二布谷鸟哈希表的流程示意图。
图7是根据本公开一些实施例的加密文档的检索方法中文档检索的流程示意图。
图8是根据本公开一些实施例的加密文档的检索方法中删除操作的流程示意图。
图9是根据本公开一些实施例的加密文档的检索装置的结构示意图。
图10是根据本公开另一些实施例的加密文档的检索装置的结构示意图。
图11是根据本公开一些实施例的加密文档的检索系统的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1是根据本公开一些实施例的加密文档的检索方法的流程示意图。图2和图3是根据本公开一些实施例的加密文档的检索方法涉及的第一布谷鸟哈希表和第二布谷鸟哈希表的示意图。
图1所示的方法可以由服务端执行,服务端例如可以包括用于存储加密文档的云服务器。如图1所示,在步骤S110,接收来自客户端的第一布谷鸟哈希表。第一布谷鸟哈希表也称请求向量或布谷鸟过滤器。第一布谷鸟哈希表包括第一哈希桶,第一哈希桶中存储有第一关键字的第一指纹。
在一些实施例中,可以预先设置第一布谷鸟哈希表中的一行或一列代表一个哈希桶。如图2所示,第一布谷鸟哈希表的一行代表一个哈希桶,第一布谷鸟哈希表一共有5个哈希桶。
第一哈希桶的位置(也称下标或编号)利用第一算法对第一关键字计算得到,第一算法可以使相似的多个关键字对应相同的哈希桶。作为一些实现方式,第一算法可以是局部敏感哈希算法,例如是p-stable局部敏感哈希算法。第一哈希桶可以包括多个,例如,如图2和图3所示,第一关键字keywork可以存储于两个第一哈希桶中。用LSH表示第一算法,第一关键字keywork所存储于的两个第一哈希桶的位置例如可以通过x1=LSH(keywork)和 计算得到。若计算得到两个位置,一个为第2行,一个为第4行,则将keywork的第一指纹存入第2行和第4行对应的两个第一哈希桶中。
第一指纹例如是simhash指纹,simhash指纹是指文本通过simhash算法得到的哈希(hash)结果。如图2所示,simhash(keywork)表示keywork的第二指纹。图3与图2对应,图2中示出了第一、二布谷鸟哈希表中存储的内容的物理含义,图3示出了第一、二布谷鸟哈希表中存储的内容的具体数值。例如,图2中simhash(keywork)的具体数值为图3中示出的(1,...1,1,1,...,0,1,0,...)。因此下文主要介绍图2,图3可以参照对图2的介绍。
在步骤S120,计算第一指纹与多个加密文档中每个加密文档的第二布谷鸟哈希表中的第二哈希桶中存在的第二指纹的相似程度。第二布谷鸟哈希表也称索引向量、文档索引向量或布谷鸟过滤器。第二布谷鸟哈希表的规格与第一布谷鸟哈希表的规格通常是相同的。例如,第一布谷鸟哈希表和第二布谷鸟哈希表可以包含相同数量的哈希桶,例如图2所示的5个。每个加密文档都有一个第二布谷鸟哈希表。
这里,第二哈希桶的位置与第一哈希桶的位置相同。例如,第一哈希桶为第一布谷鸟哈希表中位于第2行和第4行的两个哈希桶,则第二哈希桶为第二布谷鸟哈希表中位于第2行和第4行的两个哈希桶。
第二布谷鸟哈希表包括第三哈希桶,第三哈希桶的位置利用第一算法对第二关键字计算得到。作为一些实现方式,用于生成第二布谷鸟哈希表的服务端可以预先和用于发送第一布谷鸟哈希表的客户端协商选取1个第一算法。
第三哈希桶中存储有第二关键字的第二信息,第二信息包括第二指纹和相关性分数,相关性分数用于反映第二关键字与其所属的加密文档之间的相关程度。第二指纹例如是simhash指纹。如图2所示,simhash(keyword)表示keyword的第二指纹。相关性分数例如包括词频-逆文本频率(Term Frequency–Inverse Document Frequency,TF-IDF)TF-IDF分数。如图2所示,可以用TF-IDF(keyword)表示keyword的相关性分数。后文将结合一些实施例介绍TF-IDF。
如图2所示,第二布谷鸟哈希表的一行是一个哈希桶,第二布谷鸟哈希表一共包括5个哈希桶。利用第一算法对第二关键字keyword计算得到第2行和第4行两个位置,最终keyword的第二信息存储于第4行中,因此,第4行是一个第三哈希桶。此外,第二布谷鸟哈希表的第2行和第4行中还存储有其他第二关键字的第二信息,例如,apple的第二信息simhash(apple)和TF-IDF(apple)、boy的第二信息simhash(boy)和TF-IDF(boy)、cat的第二信息simhash(cat)和TF-IDF(cat)、dog的第二信息simhash(dog)和TF-IDF(dog)、egg的第二信息simhash(egg)和TF-IDF(egg),因此,第2行和第4行均为第三哈希桶。
应理解,在第二哈希桶中存在第二指纹的情况下,第二哈希桶为某个第三哈希桶。在一些实施例中,在第二哈希桶中不存在第二指纹的情况下,可以不执行步骤S120。例如,在第二哈希桶中不存在第二指纹的情况下,第一指纹和第二指纹的相似程度可以默认为0。
在步骤S130,根据第一指纹与多个加密文档中每个加密文档的第二布谷鸟哈希表中的第二哈希桶中存在的第二指纹的相似程度和相关性分数,确定多个加密文档中与第一关键字匹配的加密文档。这一步骤也称为查询步骤或匹配步骤。后文将结合一些实施例介绍如何根据相似程度和相关性分数,确定多个加密文档中与第一关键字匹配的加密文档。
第一算法可以使相似的多个关键字对应相同的哈希桶,因此,对于第一关键字,如果第二布谷鸟哈希表中存储有与其相似的第二关键字,则与第一关键字相似的第二关键字的第二信息所存储于的第三哈希桶和第一关键字的第一信息所存储于的第一哈希桶的位置将大概率是相同的。应理解,这里哈希桶相同涵盖了第三哈希桶和一部分第一哈希桶的位置相同的情况。因为一个第二关键字只存储于一个第三哈希桶中,一个第一关键字存储于多个(一般为2个)第一哈希桶中,因此,与第一关键字相似的第二关键字所存储于的第三哈希桶的位置与第一关键字所存储于的第一哈希桶的位置中的一部分相同。如图2所示,第一关键字keywork存储于第2行和第4行的两个第一哈希桶中,第二关键字keyword存储于第4行的一个第三哈希桶中。
上述实施例中,首先,利用第一算法代替标准布谷鸟过滤器通常使用的标准哈希算法,改进了布谷鸟过滤器的映射方式,使得相似的关键字所存储于的哈希桶的位置大概率是相同的,便于后续实现模糊查询功能。通过计算第一关键字的第一指纹和第二哈希桶中存在的第二关键字的第二指纹的相似程度(也即基于密文状态的指纹计算两个明文关键字的相似程度),实现加密状态的第一关键字和第二关键字之间的相似程度计算。最后,改造了标准布谷鸟过滤器的存储结构,标准布谷鸟过滤器只存储指纹,上述实施例存储指纹和相关性分数两者,以便可以基于相似程度和相关性分数两者确定与第一关键字匹配的加密文档,实现密文场景下的模糊查询功能,充分满足用户需求。
此外,通过计算第一指纹与和第一哈希桶位置相同的第二哈希桶中存在的第二指纹的相似程度,可以快捷地在第二布谷鸟哈希表中检索是否有与第一关键字相似的第二关键字。相较于计算第一指纹与第二布谷鸟哈希表中存储的所有第二指纹的相似程度的方式,本公开不仅能够实现模糊检索,还能够提高检索效率。
还应理解,上述实施例是在标准布谷鸟过滤器的基础上改进而来,相较于基于布隆过滤器的密文检索方法,上述实施例所需的存储空间更小。
在一些实施例中,根据相似程度和相关性分数,确定多个加密文档与第一关键字匹配的加密文档包括:根据相似程度和相关性分数,确定多个加密文档与第一关键字的匹配得分;以及根据匹配得分确定多个加密文档与第一关键字匹配的加密文档。
检索信息时,往往会匹配到多个加密文档作为结果,若不进行排序而直接返回给用户,检索结果里的前几个文档与用户需求的相关性很可能并不高。上述实施例中,根据相似程度和相关性分数确定每个加密文档的匹配得分,后续可以根据匹配得分对多个加密文档进行排序,从而能够实现相关性排序功能,提升用户使用检索系统的体验。
在一些实施例中,与第一关键字匹配的加密文档包括多个加密文档中匹配得分最高的预设数量的加密文档。例如,预设数量为5,则与第一关键字匹配的加密文档包括多个加密文档中匹配得分最高的前5个加密文档。
在一些实施例中,根据相似程度与相关性分数,确定多个加密文档与第一关键字的匹配得分包括:响应于第一指纹与第二指纹的相似程度大于或等于预设值,将第二指纹的相关性分数计入与第二指纹对应的加密文档的匹配得分;响应于第一指纹与一个第二指纹的相似程度小于预设值,不将第二指纹的相关性分数计入与第二指纹对应的加密文档的匹配得分。这里,预设值大于0,第二指纹的相关性分数是指第二指纹对应的关键字的第二信息中包含的相关性分数。
第一指纹和第二指纹的相似程度大于或等于预设值,说明第一关键字和第二关键字较为相似。例如,keywork的第一指纹和keyword的第二指纹的相似程度通常会大于预设值。这种情况下,可以将keyword的第二指纹的相关性分数计入与第二指纹对应的加密文档(也即包括keyword这一第二关键词的加密文档)的匹配得分。
例如,加密文档A的第二布谷鸟哈希表中的第二哈希桶中存在keyword的第二指纹,加密文档B的第二布谷鸟哈希表中的第二哈希桶中不存在keyword的第二指纹,第二指纹的相关性分数为10分,则可以给加密文档A的匹配得分增加10分,不给加密文档B的匹配得分增加分数。
在一些实施例中,在某个加密文档的第二哈希桶中存在多个第二指纹的情况下,与多个第一指纹的相似程度大于或等于预设值的每个第二指纹的相关性分数均计入与该加密文档的匹配得分。
例如,第一关键字有多个,分别为keyword和apple。Keyword的第二指纹的相关性分数为10分,apple的第二指纹的相关性分数为5分。加密文档A的第二布谷鸟哈希表中的第二哈希桶中有keyword和apple两者的第二指纹,这两个第二指纹均满足相似程度大于或等于预设值,因此,加密文档A的匹配得分增加10+5=15分。加密文档B的第二布谷鸟哈希表中的第二哈希桶中有boy和apple两者的第二指纹,boy的第二指纹不满足相似程度大于或等于预设值的条件,apple的第二指纹满足相似程度大于或等于预设值,因此,加密文档B的匹配得分增加5分。
标准布谷鸟过滤器在检索中,只匹配第一指纹与第二指纹是否相同,相同则计1分,若有K个相同,匹配得分就为K分。标准布谷鸟过滤器并未考虑到不同关键字可能具有不同的重要性,很可能出现匹配得分最高的文档并非用户最想检索到的文档的情况。上述实施例中,根据第一指纹和第二指纹的相似程度是否大于预设值,确定是否将第二指纹的相关性分数计入匹配得分。上述实施例的匹配得分能够更好地体现加密文档与用户想要查询的第一关键字的相关性,匹配得分越高,说明加密文档与用户想搜索的第一关键字相关性越高,有利于实现多关键字查询以及相关性排序的功能。
在一些实施例中,第一指纹和第二指纹的相似程度基于汉明距离进行计算。汉明距离越小,第一指纹和第二指纹的相似程度越高。
在一些实施例中,第一指纹和第二指纹采用simhash指纹,而非md5指纹、sha1指纹,这是因为如果两个文本的simhash值差别越小,这两个文本的相似性就越高。后续可以通过计算2个关键字的simhash指纹的汉明距离,来判断2个关键字在明文状态下的相似性。
在一些实施例中,一组关键字和相关性分数中的至少一个基于TF-IDF算法确定。TF-IDF算法是一种统计方法,用于评估一个字词对于一个文档集中的其中一份文档的重要程度。字词的重要程度随着它在一份文档中出现的频率(即词频)成正比增加,但同时会随着它在文档集中出现的频率(即逆文本频率)成反比下降。
作为一些实现方式,在确定每个加密文档的第二关键字的过程中,可以根据TF-IDF算法确定文档中的每个词的TF-IDF分数,选取TF-IDF分数最高的若干个词作为第二关键字。确定第二关键字的步骤通常在对文档进行加密以及上传云服务端之前完成。
在一些实施例中,一个哈希桶具有多个条目,如图2所示,第二布谷鸟哈希表的一列对应一个条目(entry),也即,第二布谷鸟哈希表中的每个第三哈希桶都具有4个条目。
图4和图5是根据本公开一些实施例的每个加密文档的第二布谷鸟哈希表的确定过程的示意图。图4和图5是彼此对应的,图4中示出了第二布谷鸟哈希表中的存储的内容的物理含义,图5中示出了第二布谷鸟哈希表中存储的内容的具体数值。因此,下面主要介绍图4,图5可以参照对图4的介绍。
在一些实施例中,如图4和图5所示,每个加密文档的第二布谷鸟哈希表根据如下方式确定:基于第一算法和一组关键字中的每个关键字计算得到第四哈希桶的位置。例如,可以根据x1=LSH(keyword)计算得到第四哈希桶的位置。响应于第四哈希桶中存在空余的第一条目,将该关键字的第二信息存储到第一条目。如图4所示,对于关键词keyword,计算得到其在第二布谷鸟哈希表第四哈希桶的位置为第2行。若第2行中存在空余的第一条目,则将keyword的第二信息存到该空余的第一条目中。
响应于第四哈希桶中不存在第一条目,基于第一算法和该关键字计算第五哈希桶的位置。第五哈希桶的位置例如可以根据 计算得到。响应于第五哈希桶中存在空余的第二条目,将该关键字的第二信息存储到第二条目。如图4所示,第二布谷鸟的第2行中已经存储了apple的第二信息simhash(apple)和TF-IDF(apple)、boy的第二信息simhash(boy)和TF-IDF(boy)、cat的第二信息simhash(cat)和TF-IDF(cat)、dog的第二信息simhash(dog)和TF-IDF(dog)。第二布谷鸟哈希表中的第2行已满,也即,第四哈希桶中不存在第一条目。这种情况下,计算得到第五哈希桶的位置为第4行。第4行中已存储egg的第二信息simhash(egg)和TF-IDF(egg),还剩三个空余条目。因此,第4行中存在空余的第二条目,将keyword的第二信息simhash(keyword)和TF-IDF(keyword)存储到第4行中的第二条目。
响应于第五哈希桶中不存在第二条目,在第四哈希桶和第五哈希桶中确定存储有最小的相关性分数的第三条目,将第三条目中已存储的第二信息删除,并将该关键字的第二信息存储到第三条目。应理解,第五哈希桶中不存在第二条目表示第四哈希桶和第五哈希桶均不存在空余条目。
标准布谷鸟过滤器的删除功能具有随机性,会随机从两个哈希桶中随机删去其中一个条目的内容。考虑到相关性分数越小说明其对应的关键字越不重要,上述实施例不是随机删除第四哈希桶和第五哈希桶中的一个条目的内容,而是将存储有最小的相关性分数的第三条目中存储的第二信息删除,改进了标准布谷鸟过滤器的删除功能,提高了第二布谷鸟哈希表中存储的第二信息的使用率,有利于增强检索结果的相关性。
图6是根据本公开一些实施例的加密文档的检索方法中确定多个加密文档各自的第二布谷鸟哈希表的流程示意图。
如图6所示,在步骤S410,为每个文档建立一个布谷鸟过滤器。应理解,在步骤S410中,布谷鸟过滤器中还没有存储关键字的第二信息。
在步骤S420,通过相关性分数等方式提取文档的关键字。相关性分数例如包括TF-IDF分数。
在步骤S430,遍历关键字,对于每个关键字计算x1=LSH(keyword),这里,x1表示第四哈希桶的位置。
在步骤S440,判断布谷鸟过滤器的x1处(即第四哈希桶)是否有空余条目。
在判断结果为是的情况下,执行步骤S450,将simbash(keyword)和相关性分数插入到布谷鸟过滤器的x1处的空余条目中。
在判断结果为否的情况下,执行步骤S460,计算 这里,x2表示第五哈希桶的位置。
在步骤S470,判断布谷鸟过滤器的x2处(即第五哈希桶)是否有空余条目。
在判断结果为是的情况下,执行步骤S480,将simbsh(keyword)和相关性分数插入到布谷鸟过滤器的x2处的空余条目中。
在判断结果为否的情况下,执行步骤S490,执行布谷鸟过滤器的删除操作,遍历非空余位置,选取相关性分数最小的simhash指纹及其相关性分数作为将被删的对象,计算将被删simhash指纹及其相关性分数的另一可存储位置,将其置换到另一可存储位置处,并将待插入关键字的simhash指纹及相关性分数插入x2处。
在步骤S492,判断当前文档的所有关键字是否都插入到布谷鸟过滤器中。
在判断结果为否的情况下,执行步骤S430。
在判断结果为是的情况下,执行步骤S494,判断是否已遍历所有文档。
在步骤S494的判断结果为否的情况下,执行步骤S420。在步骤S494的判断结果为是的情况下,流程结束。
图7是根据本公开一些实施例的加密文档的检索方法中文档检索的流程示意图。
如图7所示,在步骤S510,遍历所有文档索引向量。这里,文档索引向量可以常驻内存。文档索引向量可以基于预先建立的布谷鸟过滤器的索引数据库获取。索引数据库中可以存储多个加密文档以及每个文档的文档索引向量。
在步骤S520,客户端遍历读取用户请求的多个关键字。
在步骤S530,服务端建立得分数组。得分数组的长度为数据库中的文档数,元素初始值为0。后续可以基于得分数组计算匹配得分。
在步骤S540,客户端对于用户提交的多个关键字,计算x1=LSH(keyword),并将simbsh(keyword)添加到基于布谷鸟过滤器的请求向量的x1和x2处的数组中。
在步骤S550,客户端提交请求向量至服务端。
在步骤S560,服务端计算相同下标的请求向量与文档索引向量的元素之间的simhash指纹的汉明距离。
在步骤S570,服务端在得分数组中,该文档对应的下标的元素赋值为,汉明距离小于阈值的指纹的相关性分数之和。
在步骤S580,服务端筛选处得分最高的N个文档至客户端。
图8是根据本公开一些实施例的加密文档的检索方法中删除操作的流程示意图。
如图8所示,在步骤S610,用户指定待删除关键字所在的文档。
在步骤S620,计算x1=LSH(待删关键字),
在步骤S630,判断布谷鸟过滤器的x1和x2处,是否包含simhash(待删关键字)。
在判断结果为是的情况下,执行步骤S640,从布谷鸟过滤器的x1和x2处删除simhash(待删关键字)。
上述实施例中,可以实现单一元素删除功能。
下面介绍p-stable局部敏感哈希算法。
p-stable局部敏感哈希算法是一种通过高斯分布或均匀分布将相似的两个文本(也即向量)映射到同一个哈希桶中的算法,可作为两个文本相似性的检测依据。与常见的哈希算法如sha256、md5不同,两个文本相似性越高、被p-stable局部敏感哈希算法映射到同一个哈希桶的概率就越高。
p的取值可以是1或2,当p=1时,p-stable分布是柯西分布。当p=2时,p-stable分布是正态分布。
p-stable局部敏感哈希算法的公式为:其中:
是文本向量化后的向量;
w是向量分片的宽度;
b是[0,w]的随机数;
是符合p-stable分布的随机数组成的向量,/>的维度与/>的维度相同。
例如,[16.5,7.6,7.9,5.7,13.5,0.8],即为符合均值为10、标准差为4的正太分布的随机数组成5维向量
在一些实施例中,可以利用p-stable局部敏感哈希算法判断是否存在弱口令文本。弱口令文本是指仅包含简单数字和字母的口令文本。例如,可以将弱口令文本向量化后得到与/>b、w进行相关p-stable哈希计算,再映射到布隆过滤器中,进行高效查重。为了缓解布隆过滤器的假阳性影响,可选取多组随机的/>组成多个p-stable局部敏感哈希算法,将同一个弱口令映射到布隆过滤器的多个位中,若值为1的位数超过阈值,即认为存在弱口令,否则,即认为是强口令。
下面结合图2、图3以及一个具体实施例介绍本公开的方法。
步骤1,服务端与客户端协商选取1个p-stable局部敏感哈希函数具体包括如下步骤:
步骤1.1,设p=2,按照期望值为100,标准值为10的正态分布,随机生成1个维度为676的
步骤1.2,设布谷鸟过滤器的维度为100000,向量每段的等宽宽度w为10,随机选取b的值为6,与组成1个p-stable局部敏感哈希算法。
步骤2,服务端为每个文档建立1个布谷鸟过滤器作为索引向量,并将文档的多个关键字各自的simhash指纹及其相关性分数插入索引向量。例如,可以按照相关性分数筛选出每个文档的索引关键字,将每个文档的索引关键字映射到其对应的新型布谷鸟过滤器中,以keyword为例,具体包括如下步骤:
步骤2.1,对keyword进行2-gram分词,得到[ke、ey、yw、wo、or、rd]。
步骤2.2,固定随机种子,通过伪随机函数或sha256等,将[ke、ey、yw、wo、or、rd]映射到676维的向量中,对应的位设为1。
步骤2.3,将与步骤1的1组按照x1=LSH(keyword),/> 得到2个哈希桶编号作为下标,将keyword的simhash指纹及其相关性分数TF-IDF按照步骤2.3.1的插入策略插入至布谷鸟过滤器中。
步骤2.3.1插入策略,其可以包括步骤2.3.1.1、步骤2.3.1.2和步骤2.3.1.3。
步骤2.3.1.1,若布谷鸟过滤器x1下标的元素有空余,将[simhash(keyword),TF-IDF(keyword)]直接插入x1的空闲处。
步骤2.3.1.2,若布谷鸟过滤器x1下标的元素已满但x2下标的元素有空余,将[simhash(keyword),TF-IDF(keyword)]直接插入x2的空闲处。如图2和图3所示,布谷鸟过滤器x1下标的元素已满但x2下标的元素有空余,因此,将(1,...,1,1,1,...,0,0,1,...)和8.8插入x2的空闲处。这里,(1,...,1,1,1,...,0,0,1,...)为simhash(keyword)的取值,8.8为TF-IDF(keyword)的取值。
步骤2.3.1.3,若布谷鸟过滤器x1及x2下标的元素均已满,执行删除功能,将x1与x2元素中相关性分数最小的指纹删除,将[simhash(keyword),TF-IDF(keyword)]插入至空闲处。
步骤2.3.2,删除策略:
若被删除的指纹为simhash(deleted),计算 将[simhash(deleted),TF-IDF(deleted)]插入到布谷鸟过滤器的y处。这里,rehash的策略可以采用标准布谷鸟过滤器中使用的策略。
步骤3,客户端构造请求向量,并发送至服务端。步骤3可以包括步骤3.1和步骤3.2
步骤3.1,客户端接受用户发送的多个请求关键字,例如用户想搜索(apple,keywork)相关的文档(其中,keywork为输入错误的单词),客户端计算x1=LSH(apple),x3=LSH(keywork),将simhash(apple)插入到布谷鸟过滤器的x1和x2处,将simhash(keywork插入到布谷鸟过滤器的x3和x4处。请求向量不需要插入相关性分数。
步骤3.2,请求向量构造完毕,发送至服务端。
步骤4,服务端进行检索
如图2和图3所示,服务端可以计算请求向量的x1和x2处存储的第一指纹和索引向量的x1和x2处存储的第二指纹的相似程度。例如,服务端可以利用汉明距离确定相似程度。预设的汉明距离阈值可以为3,计算keywork的simhash指纹(1,...,1,1,1,...,0,1,0,...)与keyword的simhash指纹(1,...,1,1,1,...,0,0,1,...)的汉明距离为2。因为2≤3,服务端认为虽然用户输入的是keywork,但实际想要输入的是keyword,服务端匹配上了keyword、将keyword的TF-IDF 8.8分累积到该文档的得分值中。
并行地运行了向量计算后,即得到当前文档总共的相关性得分,也即匹配得分。再进行下一个文档的匹配计算,得到下一个文档的匹配得分。
步骤5,服务端返回得分最高的N个文档给客户端。例如,服务端可以按照匹配得分对文档进行排序,返回得分最高的N个文档给客户端。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于装置、系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开实施例还提供了一种加密文档的检索装置,包括被配置为执行上述任意一个实施例所述的方法的模块。
图9是根据本公开一些实施例的加密文档的检索装置的结构示意图。
如图9所示,加密文档的检索装置900包括接收模块900、计算模块910和确定模块920。
接收模块900被配置为接收来自客户端的第一布谷鸟哈希表。这里,第一布谷鸟哈希表包括第一哈希桶,第一哈希桶中存储有第一关键字的第一指纹,第一哈希桶的位置利用第一算法对第一关键字计算得到,第一算法使相似的多个关键字对应相同的哈希桶。
计算模块910被配置为计算第一指纹与多个加密文档中每个加密文档的第二布谷鸟哈希表中的第二哈希桶中存在的第二指纹的相似程度。这里,第二哈希桶的位置与第一哈希桶的位置相同,第二布谷鸟哈希表包括第三哈希桶,第三哈希桶的位置利用第一算法对第二关键字计算得到,第三哈希桶中存储有第二关键字的第二信息,第二信息包括第二指纹和相关性分数,相关性分数用于反映第二关键字与其所属的加密文档之间的相关程度。
确定模块被配置为根据相似程度和相关性分数,确定多个加密文档中与第一关键字匹配的加密文档。
图10是根据本公开另一些实施例的加密文档的检索装置的结构示意图。
如图10所示,加密文档的检索装置1000包括存储器1010以及耦接至该存储器1010的处理器1020,处理器1020被配置为基于存储在存储器1010中的指令,执行前述任意一个实施例的方法。
存储器1010例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如可以存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
加密文档的检索装置1000还可以包括输入输出接口1030、网络接口1040、存储接口1050等。这些接口1030、1040、1050之间、以及存储器1010与处理器1020之间例如可以通过总线1060连接。输入输出接口1030为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口1040为各种联网设备提供连接接口。存储接口1050为SD卡、U盘等外置存储设备提供连接接口。
图11是根据本公开一些实施例的加密文档的检索系统的结构示意图。如图11所示,加密文档的检索系统1100包括服务端1110和客户端1120。
服务端1110可以包括上述任意一个实施例所述的检索装置,检索装置例如为加密文档的检索装置900或加密文档的检索装置1000。
客户端1120被配置为基于用户输入的第一关键字,生成并向客户端1120发送第一布谷鸟哈希表。
本公开实施例还提供了一种计算机可读存储介质,包括计算机程序指令,该计算机程序指令被处理器执行时实现上述任意一个实施例的方法。
至此,已经详细描述了本公开的各实施例。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解,可由计算机程序指令实现流程图中一个流程或多个流程和/或方框图中一个方框或多个方框中指定的功能。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改或者对部分技术特征进行等同替换。本公开的范围由所附权利要求来限定。
Claims (11)
1.一种加密文档的检索方法,包括:
接收来自客户端的第一布谷鸟哈希表,所述第一布谷鸟哈希表包括第一哈希桶,所述第一哈希桶中存储有第一关键字的第一指纹,所述第一哈希桶的位置利用第一算法对所述第一关键字计算得到,所述第一算法使相似的多个关键字对应相同的哈希桶;
计算所述第一指纹与多个加密文档中每个加密文档的第二布谷鸟哈希表中的第二哈希桶中存在的第二指纹的相似程度,所述第二哈希桶的位置与所述第一哈希桶的位置相同,所述第二布谷鸟哈希表包括第三哈希桶,第三哈希桶的位置利用所述第一算法对第二关键字计算得到,第三哈希桶中存储有所述第二关键字的第二信息,所述第二信息包括所述第二指纹和相关性分数,所述相关性分数用于反映所述第二关键字与其所属的加密文档之间的相关程度;以及
根据所述相似程度和所述相关性分数,确定所述多个加密文档中与所述第一关键字匹配的加密文档。
2.根据权利要求1所述的方法,其中,根据所述相似程度和所述相关性分数,确定所述多个加密文档与所述第一关键字匹配的加密文档包括:
根据所述相似程度和所述相关性分数,确定所述多个加密文档与所述第一关键字的匹配得分;以及
根据所述匹配得分确定所述多个加密文档与所述第一关键字匹配的加密文档。
3.根据权利要求2所述的方法,其中,根据所述相似程度与所述相关性分数,确定所述多个加密文档与所述第一关键字的匹配得分包括:
响应于所述第一指纹与所述第二指纹的相似程度大于或等于预设值,将所述第二指纹的相关性分数计入与所述第二指纹对应的加密文档的匹配得分;以及
响应于所述第一指纹与所述第二指纹的相似程度小于预设值,不将所述第二指纹的相关性分数计入与所述第二指纹对应的加密文档的匹配得分。
4.根据权利要求2所述的方法,其中,与所述第一关键字匹配的加密文档包括所述多个加密文档中所述匹配得分最高的预设数量的加密文档。
5.根据权利要求1所述的方法,其中,每个加密文档的第二布谷鸟哈希表根据如下方式确定:
基于所述第一算法和一组关键字中的每个关键字计算得到第四哈希桶的位置;
响应于所述第四哈希桶中存在空余的第一条目,将该关键字的第二信息存储到所述第一条目;
响应于所述第四哈希桶中不存在所述第一条目,基于所述第一算法和该关键字计算第五哈希桶的位置;
响应于所述第五哈希桶中存在空余的第二条目,将该关键字的第二信息存储到所述第二条目;以及
响应于所述第五哈希桶中不存在所述第二条目,在所述第四哈希桶和所述第五哈希桶中确定存储有最小的相关性分数的第三条目,将所述第三条目中已存储的第二信息删除,并将该关键字的第二信息存储到所述第三条目。
6.根据权利要求5所述的方法,其中,所述一组关键字和所述相关性分数中的至少一个基于词频-逆文本频率算法确定。
7.根据权利要求1所述的方法,其中,所述第一算法为p-stable局部敏感哈希算法。
8.一种加密文档的检索装置,包括:被配置为执行权利要求1-7中任意一项所述的方法的模块。
9.一种加密文档的检索装置,包括:
存储器;以及
耦接至所述存储器的处理器,被配置为基于存储在所述存储器中的指令,执行权利要求1-7任意一项所述的方法。
10.一种加密文档的检索系统,包括:
服务端,包括权利要求8或权利要求9所述的检索装置;以及
客户端,被配置为基于用户输入的所述第一关键字,生成并向所述服务端发送所述第一布谷鸟哈希表。
11.一种计算机可读存储介质,包括计算机程序指令,其中,所述计算机程序指令被处理器执行时实现权利要求1-7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410012476.0A CN117828067A (zh) | 2024-01-03 | 2024-01-03 | 加密文档的检索方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410012476.0A CN117828067A (zh) | 2024-01-03 | 2024-01-03 | 加密文档的检索方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117828067A true CN117828067A (zh) | 2024-04-05 |
Family
ID=90522653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410012476.0A Pending CN117828067A (zh) | 2024-01-03 | 2024-01-03 | 加密文档的检索方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117828067A (zh) |
-
2024
- 2024-01-03 CN CN202410012476.0A patent/CN117828067A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10452691B2 (en) | Method and apparatus for generating search results using inverted index | |
Fu et al. | Toward efficient multi-keyword fuzzy search over encrypted outsourced data with accuracy improvement | |
US11048966B2 (en) | Method and device for comparing similarities of high dimensional features of images | |
US8452106B2 (en) | Partition min-hash for partial-duplicate image determination | |
CN102782643B (zh) | 使用布隆过滤器的索引搜索 | |
Chuah et al. | Privacy-aware bedtree based solution for fuzzy multi-keyword search over encrypted data | |
US20210319179A1 (en) | Method, machine learning engines and file management platform systems for content and context aware data classification and security anomaly detection | |
US20180107933A1 (en) | Web page training method and device, and search intention identifying method and device | |
US10346257B2 (en) | Method and device for deduplicating web page | |
US8775409B1 (en) | Query ranking based on query clustering and categorization | |
Singh et al. | Probabilistic data structures for big data analytics: A comprehensive review | |
CN108595517B (zh) | 一种大规模文档相似性检测方法 | |
CN111581355B (zh) | 威胁情报的主题检测方法、装置和计算机存储介质 | |
US8868569B2 (en) | Methods for detecting and removing duplicates in video search results | |
Sood et al. | Probabilistic near-duplicate detection using simhash | |
CN109885773A (zh) | 一种文章个性化推荐方法、系统、介质及设备 | |
WO2012166960A1 (en) | Finding indexed documents | |
US20240126817A1 (en) | Graph data query | |
US8370363B2 (en) | Hybrid neighborhood graph search for scalable visual indexing | |
US10289931B2 (en) | Method and system for searching images | |
Cheng et al. | Multi-Query Diversification in Microblogging Posts. | |
WO2017095413A1 (en) | Incremental automatic update of ranked neighbor lists based on k-th nearest neighbors | |
Moravec et al. | A comparison of extended fingerprint hashing and locality sensitive hashing for binary audio fingerprints | |
CN108228101B (zh) | 一种管理数据的方法和系统 | |
CN109213972B (zh) | 确定文档相似度的方法、装置、设备和计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |