CN112765421A - 一种数据检索方法及装置、终端设备 - Google Patents
一种数据检索方法及装置、终端设备 Download PDFInfo
- Publication number
- CN112765421A CN112765421A CN202110044263.2A CN202110044263A CN112765421A CN 112765421 A CN112765421 A CN 112765421A CN 202110044263 A CN202110044263 A CN 202110044263A CN 112765421 A CN112765421 A CN 112765421A
- Authority
- CN
- China
- Prior art keywords
- retrieval
- target
- character
- retrieval result
- string
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013507 mapping Methods 0.000 claims abstract description 58
- 230000000903 blocking effect Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 21
- 238000006243 chemical reaction Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9038—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9538—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请适用于数据索引技术领域,提供了一种数据检索方法及装置、终端设备,包括:将源数据转换为目标字符串,并生成映射表;将所述目标字符串发送至云服务器;将检索字符串转换为目标检索字符串;将所述目标检索字符串发送至云服务器;根据云服务器返回的检索结果集以及所述映射表确定目标检索结果;其中,检索结果集为目标检索字符串在目标字符串中的出现的位置的集合能够借助具有强大算力的云服务器来构建后缀数据实现检索,又能保证用户数据的安全性。
Description
技术领域
本申请属于数据索引技术领域,尤其涉及一种数据检索方法及装置、终端设备。
背景技术
后缀数组是一种数据结构,广泛应用于字符串匹配、数据压缩和数据索引等多个领域。后缀数据的构建需要把一个字符串的所有后缀按照字典顺序从小到大进行排序,对计算机的计算资源有较高的要求。为了满足后缀数组的排序需求,可以借助云计算技术来实现。云计算技术作为一种全新的分布式计算技术,能够为计算资源有限的用户提供强大的计算能力,以完成海量数据的运算任务。
然而,由于云服务器的开放性,用户上传的数据难免存在泄漏的危险,若直接将需要计算的后缀数据发送到云端,则无法保证用户数据的安全性。一般情况下,为了保护用户数据的安全性,可以考虑对数据进行加密,然后再上传到云端,但是经过加密后的数据无法进行检索操作。
发明内容
本申请实施例提供了一种数据检索方法及装置、终端设备,可以解决现有利用云端进行检索时无法用户数据安全的问题。
第一方面,本申请实施例提供了一种数据检索方法,包括:
将源数据转换为目标字符串,并生成映射表;
将所述目标字符串发送至云服务器;
将检索字符串转换为目标检索字符串;
将所述目标检索字符串发送至云服务器;
根据云服务器返回的检索结果集以及所述映射表确定目标检索结果;其中,检索结果集为目标检索字符串在目标字符串中的出现的位置的集合。
在第一方面的一种可能的实现方式中,所述将源数据转换为目标字符串,并生成映射表,包括:
根据第一字符集和第二字符集的映射关系,对源数据进行字符替换,生成待分块字符串;
根据分块因子对待分块字符串进行分块处理,得到若干个字符分块,并将每个分块的起点下标保存在第一数组中;
根据匹配因子在各个字符分块中填充字符,并将每个分块的字符保存在第二数组中;
根据置换数组和第二数组生成目标字符串,并将当前顺序下每个字符分块在目标字符串中的起点下标保存在第三数组中;
根据第一数组、置换数组以及第三数组生成映射表。
在第一方面的一种可能的实现方式中,上述数据检索方法还包括:
根据源数据配置第一字符集、第二字符集、分块因子以及匹配因子。
在第一方面的一种可能的实现方式中,所述将检索字符串转换为目标检索字符串,包括:
根据第一字符集和第二字符集的映射关系,对检索字符串进行字符替换,生成目标检索字符串。
在第一方面的一种可能的实现方式中,所述根据云服务器返回的检索结果集以及所述映射表确定目标检索结果,包括:
判断检索结果集中的每一个检索结果是否为有效检索结果;
若检索结果为有效检索结果,则计算有效检索结果在源数据中的位置,得到目标检索结果。
在第一方面的一种可能的实现方式中,所述判断检索结果集中的每一个检索结果是否为有效检索结果,包括:
根据映射表判断检索结果集中的每一个检索结果是否为有效检索结果。
在第一方面的一种可能的实现方式中,所述若检索结果为有效检索结果,则计算有效检索结果在源数据中的位置,得到目标检索结果,包括:
根据有效检索结果和映射表计算有效检索结果在源数据中的位置。
第二方面,本申请实施例提供了一种数据检索装置,包括:
第一转换单元,用于将源数据转换为目标字符串,并生成映射表;
第一发送单元,用于将所述目标字符串发送至云服务器;
第二转换单元,用于将检索字符串转换为目标检索字符串;
第二发送单元,用于将所述目标检索字符串发送至云服务器;
检索单元,用于根据云服务器返回的检索结果集以及所述映射表确定目标检索结果;其中,检索结果集为目标检索字符串在目标字符串中的出现的位置的集合。
第三方面,本申请实施例提供了一种终端设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的方法。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
本申请实施例与现有技术相比存在的有益效果是:
本申请实施例提供的数据检索方法及装置、终端设备,通过在客户端中将原字符串数据通过一定的方式进行变换,然后将变换后的数据上传到云服务器,在云端构建出变换后数据的后缀数据,并在需要检索的时候,将检索字符转换为目标检索字符后利用云服务器进行检索,并将检索结果返回给客户端,由客户端根据转换时的映射表来确定字符串是否出现以及出现的位置。由于云服务器无法从变换后的数据中恢复原始数据,因此可以有效地保护用户数据的安全性,即能够借助具有强大算力的云服务器来构建后缀数据实现检索,又能保证用户数据的安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用场景的架构示意图;
图2是本申请实施例提供的一种客户端和云服务器的结构示意图;
图3是本申请实施例提供一种数据检索方法的流程示意图;
图4是本申请实施例提供的数据检索方法中S11的实现流程示意图;
图5是本申请实施例提供的数据检索方法中S15的实现流程示意图;
图6是本申请实施例提供的数据检索装置的结构示意图;
图7是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了更详细的说明本申请实施例提供的数据检索方法的具体实施方式,以下将结合附图对本申请实施例提供的数据检索方法进行如下说明:
本申请实施例提供的数据检索方法可以应用于如图1所示的场景中。图1是本申请实施例提供的数据检索方法的应用场景的架构示意图。如图1所示,客户端10可以与云服务器20通信连接。
客户端10可以将源数据(字符串)进行转换,得到目标字符串以及映射表,然后将目标字符串上传给云服务器20,由云服务器20构造目标字符串的后缀数组。上述客户端10还可以根据用户输入的检索字符串生成对应的目标检索字符串,并将目标检索字符串发送给云服务器20,由云服务器20根据目标检索字符串在构造的后组数组中进行检索,得到检索结果集。云服务器20在获取到检索结果集后,会将该检索结果集返回给客户端10。客户端10在接收到检索结果集后,就能够根据映射表对检索结果集进行转换,得到目标检索结果。
请参阅图2,在本申请实施例中,上述客户端10可以包括客户端存储模块11,数据转换模块12以及查询模块13。云服务器20可以包括云服务器存储模块21、索引构建模块22以及索引查询模块23。
在本申请实施例中,上述数据转换模块12可以用于将源数据转换成目标字符串,并生成映射表。
在本申请实施例中,上述源数据可以是用户输入的字符串。当然上述源数据还可以是客户端通过其他方式获取到的数据,数据可以以字符串的形式存储在客户端中。
具体的,上述数据转换模块可以包括第一字符集生成模块、第二字符集生成模块、字符串转换模块、分块模块、分块扩充模块、置换数组生成模块、目标字符串生成模块以及映射表生成模块。
第一字符集生成模块用于根据源数据生成第一字符集。上述第一字符集是包含上述源数据的全部字符的字符集。也就是说,第一字符集是源数据中所有字符所属的字符集。
第二字符集生成模块用于根据第一字符集生成第二字符集。具体地,可以通过将第一字符集中的字符进行随机排列,生成第二字符集。
字符串转换模块用于根据第一字符集和第二字符集的对应关系,将源数据中的字符串转换为待分块字符串。
分块模块用于随机将待分块字符串分成若干字符分块。并将每个分块的起点下标保存在第一数组中。具体地,可以根据分块因子来确定字符分块的块数。
分块扩充模块用于根据匹配因子对每个字符分块进行扩充,每个字符分块分别扩充匹配因子个数相等的字符,然后把每个分块的字符串保存在第二数组中。
置换数组生成模块用于,根据分块因子生成置换数组。
上述目标字符串生成模块用于根据置换数组和第二数组生成目标字符串。并将当前顺序下每个字符分块在目标字符串中的起点下标保存在第三数组中。
上述映射表生成模块用于根据第一数组、置换数组以及第三数组生成映射表。上述映射表用于表示每个分块在目标字符串中的起点下标与在待分块字符串中的起点下标的对应关系。
在本申请实施例中,上述查询模块13用于读取用户输入的检索字符串、第一字符集和第二字符集,然后根据第一字符集和第二字符集的关系将用户输入的检索字符串转换为目标检索字符串,然后将目标检索字符串发送给云服务器进行查询操作。
上述查询模块13还用于根据云服务器返回的检索结果集以及映射表确定出目标检索结果。
在本申请申请实施例中,上述客户端存储模块11用于存储上述源数据、上述用户输入的检索字符串、上述第一字符集、上述第二字符集、上述分块因子、上述匹配因子、上述第一数组、上述第二数组、上述第三数组、上述置换数组、上述映射表。
需要说明的是,上述分块因子、匹配因子以及置换数组可以根据实际应用需求来设置,本申请对此并不加以限制。
在本申请实施例中,上述索引构建模块22用于计算客户端10发送的目标字符串的后缀数组。其中,后缀是指以源数据(S)中的某一位置为起点直到字符串终点的一个子串,若用Si(0<=i<n)表示字符串S的后缀,那么Si=S[i,n-1]。后缀数组就是用一个一维整型数组SA[0...n-1]去记录字符串S的所有后缀按照字典顺序升序排列后每个后缀的起点下标,且对renyi de 0<=i<j<=n-1,都有SSA[i]<SSA[j]。
上述索引查询模块用于根据后缀数组查找目标检索字符串出现的所有位置,得到检索结果集。
上述云服务器存储模块用于保存上述目标字符串和上述后缀数组。
请参阅图3,图3示出了本申请实施例提供的一种数据检索方法的实现流程示意图。示例性的,上述数据检索方法的执行主体可以是上述客户端。如图3所示,上述数据检索方法具体包括以下步骤:
S11:将源数据转换为目标字符串,并生成映射表。
在本申请实施例中,客户端可以根据源数据中所有字符串所属的字符集(以下简称第一字符集)以及根据第一字符集随机生成的第二字符集的映射关系进行字符替换,进而生成与源数据对应的待分块字符串。
在得到待分块字符串后,就可以根据预设的分块因子和配置因子对待分块字符串进行分块和字符补充处理,进而得到若干个字符分块。字符分块的块数与分块因子相对应。补充的字符个数与配置因子相对应。最后一个分块可以补充“$”字符,“$”字符是字典序中最小且唯一的字符。
需要说明的是,上述分块因子和配置因子可以根据实际应用进行设置,本申请对此不加以限制。
在得到字符分块后,对各个字符分块进行拼接,进而得到目标字符串。把0到m-1个整数随机排列并保存在置换数组中,根据置换数组对若干个字符分块进行拼接,进而得到目标字符串。其中,m为分块因子,m为大于1的正整数。
在本申请实施例中,客户端在得到目标字符串的同时会生成能够标识每个分块在目标字符串中的起点下标与在待分块字符串中的起点下标的对应关系的映射表,并会保存上述映射表。
S12:将所述目标字符串发送至云服务器。
在本申请实施例中,在得到目标字符串后,客户端就会将该目标字符串发送给云服务器,以使云服务器根据该目标字符串生成与其对应的后缀数组。通过云服务器李艾生成目标字符串的后缀数组可以充分得利用云服务器的计算资源。
S13:将检索字符串转换为目标检索字符串。
在本申请实施例中,当需要在源数据中进行检索时,用户可以通过客户端输入需要检索的字符串(检索字符串)。客户端在接收到检索字符串后,会将该检索字符串转换成目标检索字符串。需要说明的是检索字符串的长度不大于匹配因子的长度。
具体的,将检索字符串转换为目标检索字符串的过程可以参见将源数据转换为待分块字符串的过程。即根据第一字符集和第二字符集的映射关系进行字符替换,将检索字符串替换为目标检索字符串。
S14:将所述目标检索字符串发送至云服务器。
在本申请实施例中,在得到目标检索字符串后,通过将目标检索字符串上传到云服务器中,就能够通过云服务器来执行检索操作,提高检索效率。
具体地,云服务器可以根据目标字符串和后缀数组对目标检索字符串进行二分搜索,以检索目标检索字符串在目标字符串中出现的位置,并保存检索到的结果到检索结果集中,然后再将检索结果集返回给客户端,由客户端来判断检索结果集中的检索结果是否保留以及保留的检索结果集中的检索结果对应的目标检索结果。
S15:根据云服务器返回的检索结果集以及所述映射表确定目标检索结果。
其中,检索结果集为目标检索字符串在目标字符串中的出现的位置的集合。
在本申请实施例中,客户端在接收到云服务器返回的检索结果集后,可以遍历该检索结果集中的每一个检索结果,按照预设判断标准来判断每一个检索结果是否为有效检索结果。若是,则计算该检索结果在源数据中的位置,并将该结果保留在目标检索结果中。否则,不保留该检索结果。
在具体应用中,上述预设判断标准具体可以根据映射表和检索结果集来确定。
请参阅图4,图4示出了本申请另一实施例提供的一种数据检索方法中S11的实现流程示意图。区别于上一实施例,本申请实施例提供的数据检索方法中的S11可以包括以下步骤:
S21:获取源数据。
在本申请实施例中,上述源数据可以是用户在客户端中输入的一串字符串。
示例性的,上述源数据可以是字符串S。例如:S=asuffixoffatrsing。
S22:根据源数据确定第一字符集。
S23:根据第一字符集确定第二字符集。
需要说明的是,上述第一字符集可以是包括上述源数据中所有字符串的字符集合。上述第二字符集可以是对第一字符集进行随机排列而得到的新的字符集。
示例性的,当S=asuffixoffatrsing时,第一字符集A可以为:A={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}。第二字符集B可以是第一字符集A的倒序,即B={z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a}。
S24:根据第一字符集和第二字符集的映射关系,对源数据进行字符替换,生成待分块字符串。
通过将源数据中的每个字符按照第一字符集和第二字符集的映射关系进行字符替换,就能够得到新的字符串(待分块字符串)。
示例性的,当源数据S=asuffixoffatrsing;
第一字符集A={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z};
第二字符集B={z,y,x,w,v,u,t,s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a}时,待分块字符串W=zhfuucluuzhgirmt。
S25:根据分块因子对待分块字符串进行分块处理,得到若干个字符分块,并将每个分块的起点下标保存在第一数组中。
在本申请实施例中,分块因子可以根据实际应用来设置。示例性的,可以将分块因子设置为m=3。即,将待分块字符串进行分块后可以得到W=[zhfu][urcluuzh][girmt]。将每个分块的起点下标保存在第一数组U中。
S26:根据匹配因子在各个字符分块中填充字符,并将每个分块的字符保存在第二数组中。
在本申请实施例中,匹配因子也是可以根据实际应用来设置的。示例性的可以将匹配因子设置为k=3。即在每个分块的末端补充3个字符。
具体地,可以根据源数据配置第一字符集、第二字符集、分块因子以及匹配因子。
即第二数组T={[zhfuurc][urcluuzhgir][girmt$$$]}。
S27:根据置换数组和第二数组生成目标字符串,并将当前顺序下每个字符分块在目标字符串中的起点下标保存在第三数组中。
在本申请实施例中,置换数组可以根据分块因子来生成。置换数组可以通过将0到m-1个整数随机排列得到。
通过将第二数组T中的分块根据置换数组P的排序进行拼接操作,就能得到目标字符串Y。即目标字符串Y=T[P[0]]T[P[1]]...T[P[m-1]]。
假设置换数组P=[1,0,2],第二数组T={[zhfuurc][urcluuzhgir][girmt$$$]},则得到的目标字符串Y=[urcluuzhgir][zhfuurc][girmt$$$]。
与此同时将每个字符分块在目标字符串中的起点下标保存在第三数组Q中。
S28:根据第一数组、置换数组以及第三数组生成映射表。
在本申请实施例中,可以通过映射表H记录每个分块在目标字符串Y中的起点下标(key)和待分块字符串W中的起始下标(value1、value2)的对应关系。其中,映射表H的key、value1、value2需要根据第一数组U、第三数组Q以及置换数组P来确定。具体地,key=Q[i],value1=U[P[i]],value2分为两种情况,当P[i]=m-1,value2=n-1;当P[i]≠m-1,value2=U[P[i]+1]-1,0<=i<m。其中,n为源数据的字符串长度。
针对上面的示例,映射表可以如表1所示:
表1:
key | value1 | value2 |
0 | 4 | 11 |
11 | 0 | 3 |
18 | 12 | 16 |
请参阅图5,图5示出了本申请另一实施例提供的一种数据检索方法中S15的实现流程示意图。区别于上一实施例,本申请实施例提供的数据检索方法中的S15可以包括以下步骤:
S31:判断检索结果集中的每一个检索结果是否为有效检索结果。
在本申请实施例中,根据映射表判断检索结果集中的每一个检索结果是否为有效检索结果。
在具体应用中,通过获取检索结果集G中的检索结果gi,在映射表H中以二分查找的方式找到小于或等于gi的key,然后取出key以及key对应的两个值,value1和value2。
分别计算检索结果gi与key的差值li,value1和value2的差值vi。然后判断li和vi的大小。若li>vi,则gi不是有效检索结果;若li<=vi,则gi是有效检索结果。
S32:若检索结果为有效检索结果,则计算有效检索结果在源数据中的位置,得到目标检索结果。
在本申请实施例中,根据有效检索结果和映射表计算有效检索结果在源数据中的位置。
具体地,计算有效检索结果在源数据中的位置的计算公式为:ri=li+value1,0<=i<len(G)。
示例性的,假设源数据S=asuffixoffatrsing。检索字符串为x=ff。
那么通过转换后得到的目标字符串Y=[urcluuzhgir][zhfuurc][girmt$$$]。目标检索字符串为x’=uu。
因此通过云服务器进行检索后可以得到的检索结果集G={4,14}。
0<=i<len(G)=2。
当i=1时,key=11;value1=0;value2=3;gi=g1=14。
则li=l1=g1-key=14-11=3;
vi=v1=value2-value1=3-0=3。
则l0=v0。因此,g1是有效检索结果。
因此可以得到g1对应的目标检索结果r1为:r1=l1+value1=3+0=3。
当i=0时,key=0;value1=4;value2=11;gi=g0=4。
则li=l0=g0-key=4-0=4;
vi=v0=value2-value1=11-4=7。
则l0<v0。因此,g0是有效检索结果。
因此可以得到g0对应的目标检索结果r0为:r0=l0+value1=4+4=8。
因此可以得到目标检索结果R={3,8}。
又示例性的,假设用户输入的检索字符串为x=ia,转换后得到的字符串rz在云服务器通过二分查找到的结果集G={10},使用上述步骤可以得到li=10,vi=7,因此该检索结果不是有效检索结果。
以上可以看出,本申请实施例提供的数据检索方法,通过在客户端中将原字符串数据通过一定的方式进行变换,然后将变换后的数据上传到云服务器,在云端构建出变换后数据的后缀数据,并在需要检索的时候,将检索字符转换为目标检索字符后利用云服务器进行检索,并将检索结果返回给客户端,由客户端根据转换时的映射表来确定字符串是否出现以及出现的位置。由于云服务器无法从变换后的数据中恢复原始数据,因此可以有效地保护用户数据的安全性,即能够借助具有强大算力的云服务器来构建后缀数据实现检索,又能保证用户数据的安全性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
对应于上文实施例所述的数据检索方法,图6示出了本申请实施例提供的数据检索装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图6,在本申请实施例中,数据检索装置60包括:
第一转换单元61用于将源数据转换为目标字符串,并生成映射表;
第一发送单元62用于将所述目标字符串发送至云服务器;
第二转换单元63用于将检索字符串转换为目标检索字符串;
第二发送单元64用于将所述目标检索字符串发送至云服务器;
检索单元65用于根据云服务器返回的检索结果集以及所述映射表确定目标检索结果。
在本申请一实施例中,上述第一转换单元61具体可以用于根据第一字符集和第二字符集的映射关系,对源数据进行字符替换,生成待分块字符串;根据分块因子对待分块字符串进行分块处理,得到若干个字符分块,并将每个分块的起点下标保存在第一数组中;根据匹配因子在各个字符分块中填充字符,并将每个分块的字符保存在第二数组中;根据置换数组和第二数组生成目标字符串,并将当前顺序下每个字符分块在目标字符串中的起点下标保存在第三数组中;根据第一数组、置换数组以及第三数组生成映射表。
在本申请一实施例中,上述第一转换单元61还用于:根据源数据配置第一字符集、第二字符集、分块因子以及匹配因子。
在本申请一实施例中,上述第二转换单元63具体用于根据第一字符集和第二字符集的映射关系,对检索字符串进行字符替换,生成目标检索字符串。
在本申请一实施例中,检索单元65可以包括判断单元和计算单元。
判断单元用于判断检索结果集中的每一个检索结果是否为有效检索结果。
具体地,判断单元用于根据映射表判断检索结果集中的每一个检索结果是否为有效检索结果。
计算单元用于若检索结果为有效检索结果,则计算有效检索结果在源数据中的位置,得到目标检索结果。
具体地,计算单元用于根据有效检索结果和映射表计算有效检索结果在源数据中的位置。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图7为本申请一实施例提供的终端设备的结构示意图。如图7所示,该实施例的终端设备7包括:至少一个处理器70(图7中仅示出一个处理器)、存储器71以及存储在所述存储器71中并可在所述至少一个处理器70上运行的计算机程序72,所述处理器70执行所述计算机程序72时实现上述任意各个方法实施例中的步骤。
所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的举例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),该处理器70还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71在一些实施例中可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71在另一些实施例中也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据检索方法,其特征在于,包括:
将源数据转换为目标字符串,并生成映射表;
将所述目标字符串发送至云服务器;
将检索字符串转换为目标检索字符串;
将所述目标检索字符串发送至云服务器;
根据云服务器返回的检索结果集以及所述映射表确定目标检索结果;其中,检索结果集为目标检索字符串在目标字符串中的出现的位置的集合。
2.如权利要求1所述的数据检索方法,其特征在于,所述将源数据转换为目标字符串,并生成映射表,包括:
根据第一字符集和第二字符集的映射关系,对源数据进行字符替换,生成待分块字符串;
根据分块因子对待分块字符串进行分块处理,得到若干个字符分块,并将每个分块的起点下标保存在第一数组中;
根据匹配因子在各个字符分块中填充字符,并将每个分块的字符保存在第二数组中;
根据置换数组和第二数组生成目标字符串,并将当前顺序下每个字符分块在目标字符串中的起点下标保存在第三数组中;
根据第一数组、置换数组以及第三数组生成映射表。
3.如权利要求2所述的数据检索方法,其特征在于,还包括:
根据源数据配置第一字符集、第二字符集、分块因子以及匹配因子。
4.如权利要求1所述的数据检索方法,其特征在于,所述将检索字符串转换为目标检索字符串,包括:
根据第一字符集和第二字符集的映射关系,对检索字符串进行字符替换,生成目标检索字符串。
5.如权利要求1所述的数据检索方法,其特征在于,所述根据云服务器返回的检索结果集以及所述映射表确定目标检索结果,包括:
判断检索结果集中的每一个检索结果是否为有效检索结果;
若检索结果为有效检索结果,则计算有效检索结果在源数据中的位置,得到目标检索结果。
6.如权利要求5所述的数据检索方法,其特征在于,所述判断检索结果集中的每一个检索结果是否为有效检索结果,包括:
根据映射表判断检索结果集中的每一个检索结果是否为有效检索结果。
7.如权利要求5所述的数据检索方法,其特征在于,所述若检索结果为有效检索结果,则计算有效检索结果在源数据中的位置,得到目标检索结果,包括:
根据有效检索结果和映射表计算有效检索结果在源数据中的位置。
8.一种数据检索装置,其特征在于,包括:
第一转换单元,用于将源数据转换为目标字符串,并生成映射表;
第一发送单元,用于将所述目标字符串发送至云服务器;
第二转换单元,用于将检索字符串转换为目标检索字符串;
第二发送单元,用于将所述目标检索字符串发送至云服务器;
检索单元,用于根据云服务器返回的检索结果集以及所述映射表确定目标检索结果;其中,检索结果集为目标检索字符串在目标字符串中的出现的位置的集合。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110044263.2A CN112765421B (zh) | 2021-01-13 | 2021-01-13 | 一种数据检索方法及装置、终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110044263.2A CN112765421B (zh) | 2021-01-13 | 2021-01-13 | 一种数据检索方法及装置、终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765421A true CN112765421A (zh) | 2021-05-07 |
CN112765421B CN112765421B (zh) | 2024-01-02 |
Family
ID=75700270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110044263.2A Active CN112765421B (zh) | 2021-01-13 | 2021-01-13 | 一种数据检索方法及装置、终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765421B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170124037A1 (en) * | 2015-11-03 | 2017-05-04 | International Business Machines Corporation | Technique used in text analysis in a safe manner |
CN109815723A (zh) * | 2019-02-28 | 2019-05-28 | 东北大学 | 一种基于后缀树的可搜索加密系统及方法 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
CN110674362A (zh) * | 2019-08-22 | 2020-01-10 | 视联动力信息技术股份有限公司 | 搜索推荐方法、装置、电子设备及可读存储介质 |
CN110837584A (zh) * | 2019-10-18 | 2020-02-25 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN110852046A (zh) * | 2019-10-18 | 2020-02-28 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
-
2021
- 2021-01-13 CN CN202110044263.2A patent/CN112765421B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170124037A1 (en) * | 2015-11-03 | 2017-05-04 | International Business Machines Corporation | Technique used in text analysis in a safe manner |
CN109815723A (zh) * | 2019-02-28 | 2019-05-28 | 东北大学 | 一种基于后缀树的可搜索加密系统及方法 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
CN110674362A (zh) * | 2019-08-22 | 2020-01-10 | 视联动力信息技术股份有限公司 | 搜索推荐方法、装置、电子设备及可读存储介质 |
CN110837584A (zh) * | 2019-10-18 | 2020-02-25 | 中山大学 | 一种分块并行构造后缀数组的方法及系统 |
CN110852046A (zh) * | 2019-10-18 | 2020-02-28 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112765421B (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110689349B (zh) | 一种区块链中的交易哈希值存储和搜索方法及装置 | |
WO2010135082A1 (en) | Localized weak bit assignment | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
EP2821924A1 (en) | Method, device and system for querying data index | |
JP2014191670A5 (zh) | ||
CN110489466B (zh) | 邀请码的生成方法、装置、终端设备及存储介质 | |
CN102063498B (zh) | 基于内容特征信息对链接进行去重处理的方法与设备 | |
CN108628898B (zh) | 数据入库的方法、装置和设备 | |
US20120131355A1 (en) | Range search system, range search method, and range search program | |
CN114531220A (zh) | 一种基于前向和后向隐私的高效容错动态短语搜索方法 | |
US20130262400A1 (en) | Data index query method, apparatus and system | |
CN114499743A (zh) | 通信数据的处理方法、装置、设备及存储介质 | |
CN105045783A (zh) | 含冗余的数据压缩与解压缩的系统和方法 | |
CN110362560A (zh) | 一种无业务主键数据在存储数据库时去重的方法 | |
JP2012507767A5 (zh) | ||
CN112765421B (zh) | 一种数据检索方法及装置、终端设备 | |
CN115292737B (zh) | 一种多关键词模糊搜索加密方法、系统及电子设备 | |
WO2017157038A1 (zh) | 数据处理的方法、装置和设备 | |
CN112241336A (zh) | 用于备份数据的方法、设备和计算机程序产品 | |
CN113452783B (zh) | 区块链云架构的数字化paas开放平台系统及实现方法 | |
CN114461768A (zh) | 一种基于同态加密的多关键词文件加密检索方法及系统 | |
US20230039723A1 (en) | Secret hash table construction system, reference system, methods for the same | |
KR102108542B1 (ko) | 영상 메타정보 보안 방법 및 이를 이용한 암호화된 영상 데이터 검색 방법 | |
US20240080478A1 (en) | Point cloud encoding and decoding method and apparatus, computer, and storage medium | |
US11379449B2 (en) | Method, electronic device and computer program product for creating metadata index |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |