CN111444413B - 一种数据查询方法、装置和计算设备 - Google Patents
一种数据查询方法、装置和计算设备 Download PDFInfo
- Publication number
- CN111444413B CN111444413B CN202010271150.1A CN202010271150A CN111444413B CN 111444413 B CN111444413 B CN 111444413B CN 202010271150 A CN202010271150 A CN 202010271150A CN 111444413 B CN111444413 B CN 111444413B
- Authority
- CN
- China
- Prior art keywords
- character string
- index
- catalog
- string set
- candidate
- 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.)
- Active
Links
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/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling 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/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9532—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法,适于在计算设备中执行,该计算设备中存储有多个字符串集的数据索引,该数据索引包括一级目录和其下的至少一个二级目录,且每个二级目录都标记有所属的字符串集,该方法包括步骤:将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段;生成前缀片段的第一索引和后缀片段的第二索引,并在数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集;以及计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为目标字符串集的最相近字符串集。本发明公开了对应的数据查询装置和计算设备。
Description
技术领域
本发明涉及计算机和科学技术领域,尤其涉及一种数据查询方法、装置和计算设备。
背景技术
随着计算机和互联网技术的发展,中小学教育,乃至大学教育中的练习和考试题目均实现了电子化存储,并可上传到网络上供学生使用。而且,用户还可以将不懂的题目上传到平台上,以搜索与该题目最相近的题目进行学习。但目前的题目搜索引擎,仍无法为用户自动匹配出最准确最相近的题目,从而影响用户体验。因此,需要一种能够更精确的相近题目确定方法。
发明内容
鉴于上述问题,本发明提出了一种数据查询方法、装置和计算设备,以力图解决或者至少解决上面存在的问题。
根据本发明的一个方面,提供了一种数据查询方法,适于在计算设备中执行,该计算设备中存储有多个字符串集的数据索引,该数据索引包括一级目录和其下的至少一个二级目录,且每个二级目录都标记有所属的字符串集,该方法包括步骤:将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段;生成前缀片段的第一索引和所述后缀片段的第二索引,并在数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集;以及计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为所述目标字符串集的最相近字符串集。
可选地,在根据本发明的数据查询方法中,字符串集为试题,候选字符串集为候选试题。
可选地,在根据本发明的数据查询方法中,数据索引表示为索引树。
可选地,在根据本发明的数据查询方法中,二级目录表示为键值对,其以二级目录的索引值为键、以包含该第一索引和第二索引组成的字符串的字符串集为值;其中该字符串集还标记有在该字符串集中出现该目录表示的次数,作为该字符串集的元素个数。
可选地,在根据本发明的数据查询方法中,还包括步骤:统计每个一级目录下的所有二级目录的总元素个数,作为该一级目录的计数;当某个一级目录的计数达到第一阈值时,删除该一级目录下的所有二级目录,并将该一级目录标记为已删除。
可选地,在根据本发明的数据查询方法中,还包括步骤:统计各一级目录下的每个二级目录的总元素个数,作为该二级目录的计数;当某二级目录的计数达到第二阈值时,将该二级目录下的所有字符串集删除,并用预设空值替换。
可选地,在根据本发明的数据查询方法中,其中,被删除的一级目录标记有该一级目录的计数;被替换的二级目录标记有该二级目录的计数。
可选地,在根据本发明的数据查询方法中,生成前缀片段的第一索引和后缀片段的第二索引,并在数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集的步骤包括:生成前缀片段的第一索引;若数据索引中存在以该第一索引命名的一级目录、且该一级目录未被标记为已删除,则生成后缀片段的第二索引;反之,则终止查找。
可选地,在根据本发明的数据查询方法中,在生成后缀片段的第二索引之后,还包括步骤:在查找到的一级目录中继续查找以该第二索引命名的二级目录;若未查找到该二级目录,或者所查找的二级目录的值为预设空值,则终止查找。
可选地,在根据本发明的数据查询方法中,计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数的步骤包括:每查找到一个候选字符串集,则判定该候选字符串集与所述目标字符串集具有一个相同的目录表示,并为该候选字符串集计数加1。
可选地,在根据本发明的数据查询方法中,计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数的步骤包括:从索引树中统计每个候选字符串集所包含的目录表示集合;获取目标字符串集的目录表示集合,并将该集合与每个候选字符串集的目录表示集合对比,以确定其中具有相同目录表示的个数。
可选地,在根据本发明的数据查询方法中,将待查询的目标字符串集划分为多个字符串片段的步骤包括:将目标字符串集进行分句处理,得到多个字符串;基于预定步长,从每个字符串提取多个字符串片段。
可选地,在根据本发明的数据查询方法中,预定步长为1个字符,字符串片段的最大长度为4个字符、最小长度为3个字符,前缀片段的长度为2个字符。
可选地,在根据本发明的数据查询方法中,第一索引和第二索引均为哈希索引,索引树为B+树。
根据本发明的又一个方面,提供了一种数据查询装置,适于驻留在计算设备中,所述计算设备中存储有多个字符串集的数据索引,数据索引包括一级目录和其下的至少一个二级目录,且每个二级目录都标记有所属的字符串集,该装置包括:片段提取模块,适于将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段;候选集查询模块,适于生成前缀片段的第一索引和后缀片段的第二索引,并在数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集;以及相近集确定模块,适于计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为所述目标字符串集的最相近字符串集。
根据本发明的又一个方面,提供了一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,该程序指令被配置为适于由所述至少一个处理器执行,程序指令包括用于执行如上所述的数据查询方法的指令。
根据本发明的又一个方面,提供了一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的数据查询方法。
根据本发明的技术方案,在内存中将字符串集(如一道试题)划分为多个字符串片段,并将每个字符串片段以一级目录和二级目录的索引结构表示,同时还标注该字符串片段所属的字符串集。对于某个待查询的目标字符串集,获取该字符串集的所有字符串片段及各片段的索引结构表示,然后去内存中查找包含这些索引表示的候选字符串集(如候选试题)。与目标字符串集具有相同字符串片段数目最多的,即为最相近字符串集。这种方式能够准确找到每个试题的最相近试题,进而可以从内存中查找所存储的该最相近试题的答案,便于用户学习。
而且,本发明先将试题等字符串集进行分句处理,得到多个字符串后,再将每个字符串以预定移动步长,分割为多个字符串片段,优选四个字符长度,该四个字符中前两个为前缀片段,对应的索引值作为一级目录;后两个为后缀片段,对应的索引值作为二级目录,从而将一个字符串集精细划分为多个字符串片段的目录表示。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的结构框图;
图2示出了根据本发明一个实施例的数据查询方法200的流程图;以及
图3示出了根据本发明一个实施例的数据查询装置300的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是示例计算设备100的框图。在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上利用程序数据124进行操作。程序数据124包括指令,在根据本发明的计算设备100中,程序数据124包含用于执行数据查询方法200的指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为服务器,例如文件服务器、数据库服务器、应用程序服务器和WEB服务器等,也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。计算设备100还可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。在一些实施例中,计算设备100被配置为执行根据本发明的数据查询方法200。
一般来说,计算设备100与客户端通信连接,适于接收来自客户端的查询请求,该查询请求中带有待查询的字符串集。计算设备100中具有高速内存索引,用于存储多个字符串集的数据索引,以便可以从中快速查到一个目标字符串集的最相近字符串集。计算设备100可以将该高速内存索引存储于外部的数据库中,本发明对此不作限制。
这里,字符串集可以是中文、可以是英文、也可以是中英文混合。字符串集可以是一道或多道试题,这样用户可以查找与目标试题相近的试题,应用于试题答疑领域。字符串集还可以是一个或多个段落,或者是一篇文章等,用户还可以查找与目标段落相近的段落、与目标文章相近的文章,可应用于文章(如小说或论文)的抄袭查重领域,如查找小说相似段落来制作抄袭调色盘。每个字符串集具有对应的字符串集标识,多个字符串集可按照其加入到内存索引的先后顺序依次排序标识,如0号作业标识、1号作业标识,等等。基于字符串集标识,可确定该字符串集的原文内容。
字符串集包括多个字符串,其可以通过分句处理后得到,空格或标点符号均可以看作是两个字符串的分割。当然,字符串集也可以作为一个具有标点符号的完整的字符串,此时空格和标点符号也都作为一个正常的字符处理。
一个字符串可以分割出多个字符串片段,优选以预定步长和预定字符串片长度进行分割。例如,预定步长为1个字符,字符串片段优选4个字符,最长为4个字符、最短为3个字符,一般当不足4个字符时选择3个字符。
每个字符串片段可划分为前缀片段和后缀片段,前缀片段优选字符长度为2,剩下的则为后缀片段。每个前缀片段和后缀片段都可生成一个索引,本发明将其对应称为第一索引和第二索引。该索引例如可以为哈希索引或simhash索引等现有常用索引方法,本发明对此不作限制。通过这种逐渐推进的片段表示方式,能最大限度的保留字符串集原文中的各项语义和逻辑特征,为之后相似字符串片段的对比,提供了极大的保障。
例如,假设有字符串集A:“一二三四五,上山打老虎”,采用分句的方式可从中提取“一二三四五”和“上山打老虎”这两个字符串,进而可从这两个字符串中提取“一二三四”、“二三四五”、“三四五”、“上山打老”、“山打老虎”、“打老虎”这6个字符串片段。对于“一二三四”这个字符串片段,其前缀片段“一二”对应的第一索引为2,后缀片段“三四”对应的第二索引为4。
第一索引可以作为数据索引的一级目录,第二索引则可构成数据索引的二级目录。字符串片段的一级目录和二级目录构成了该串片段的目录表示,如“一二三四”的目录表示为(2,4)。一个一级目录下可以有一个或多个二级目录。数据索引可以表示为索引树,例如可以为B树、B+树等结构。该索引树的结构可采用以下方式:
//二级目录使用第二索引值作为查询key
class Map{
class Node{}
class Branch extends Node{
uint32 keys[BRANCH_SIZE]
Node children[BRANCH_SIZE+1]
int32 count
}
class Leaf extends Node{
uint32 keys[LEAF_SIZE]
StringSet values[LEAF_SIZE]
Leaf nextLeaf
int32 count
}
Node root
int depth
}
//一级目录使用第一索引作为下标访问
class Index{
Map maps[LAYER_0_SIZE]
}
数据索引的二级目录可表示为键值对,其以二级目录的索引值为键、以包含该第一索引和第二索引组成的字符串的字符串集为值,也就是以字符串片段所属的字符串集为值。这里的字符串集,实际是其字符串集标识。例如,“一二三四”的二级目录可表示为(4,A),“4”代表后缀片段的索引值,A为该字符串片段所属的字符串集标识。可以看出,一级目录可以用最短时间判断一个字符串片段是否存在,而二级目录可以用来通过第二索引来查询到包含这个字符串片段的字符串集。
应当理解的是,一个字符串集中可能会多次出现同一个字符串片段,同一个字符串片段也可以存在于多个字符串集中。因此,在一种实现方式中,索引树的叶子节点中所属的字符串集还可以标记在该字符串集中出现对应一级目录和二级目录的目录表示的次数,作为该字符串集的元素个数,该元素个数也就是对应字符串片段在该字符串集中的出现次数。每出现一次,则该元素个数加1。例如,字符串集中A出现3次“一二三四”,则代表一级目录为2、二级目录(4,A)的出现次数为3。当然,在另一种实现方式中,也可以不对字符串集的出现次数进行统计显示,而每次都进行单独显示,此时根节点中同一字符串集可能会出现多次。
图2示出了根据本发明一个实施例的数据查询方法200,在计算设备中执行,如在计算设备100中执行。如图2所示,该方法始于步骤S210。
在步骤S210,将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段。
在一种实现方式中,若内存索引中的字符串片段不含标点符号,则可将目标字符串集进行分句处理,得到多个字符串。之后,基于预定步长,从每个字符串提取多个字符串片段。而若内存索引中的字符串片段将标点符号作为正常的字符处理,则将目标字符串集中的标点符号也作为一个正常的字符,按照字符顺序从前往后依次分割出多个字符串片段。
随后,在步骤S220中,生成前缀片段的第一索引和后缀片段的第二索引,并在数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集。
根据一个实施例,方法200还可以包括步骤:统计每个一级目录下的所有二级目录的总元素个数,作为该一级目录的计数;当某个一级目录的计数达到第一阈值时,删除该一级目录下的所有二级目录,并将该一级目录标记为已删除。例如,一级目录为2时,二级目录有4、5、7这三个索引值,这三个索引值对应的字符串集总数分别为10、15、20,则一级目录2的计数为45。当该计数大于第一阈值时,则将maps[2]之下的所有二级目录删除。
这里,基于一级目录来统计并删除索引中前缀出现频度过高的字符串片段。如果一级目录中的项目元素超过一定阈值,则认为前缀出现频率过高,对应的字符串片段作为特征的作用更低,因此删除这些高频前缀可以极大减少一次筛选对二级目录的检索次数。
另外,方法200还可以包括步骤:当数据索引的内存不足时,删除计数最多的一级目录下的所有二级目录,并将该一级目录标记为已删除。同时,还可以标记该已删除的一级目录的计数。假设一级目录3的计数值最大,则当内存不足时,优先删除maps[3]之下的二级目录,并将其标记为已删除。如果删除后内存仍然不足,则继续删除并标记当前计数最大的一级目录,依此类推。
进一步地,考虑到如果一个字符串片段被太多字符串片段所包含,则该字符串片段作为特征的价值就会降低,从而加大统计压力。因此,方法200中,还可以统计各一级目录下的每个二级目录的总元素个数,作为该二级目录的计数;当某二级目录的计数达到第二阈值时,将该二级目录下的所有字符串集删除,并用预设空值替换。同时,将该二级目录标记为已替换(或已合并删除),以及标记该已替换的二级目录的计数。
例如,若二级目录4的键值对中有A1、A2、A3这三个字符串集,每个字符串的出现次数分别为2、3、4,则二级目录4的计数为9。当该二级目录的计数达到第二阈值时,则将其多个字符串集进行合并删除,统一用(4,Null)代替该二级目录的多个键值对。实际操作过程中,可以只保留二级目录中的其中一个键值对,删除其他键值对,并将所保留的键值对的值替换为预设空值。
对于第一阈值和第二阈值,本领域技术人员可以根据需要自行设定,本发明对此不作限制。其中第一阈值可以根据内存索引中每个一级目录的计数计算。而对于内存是否不足的判断,如前文所述,本申请可采用B+树形式存储内存索引,尤其对于中文文档的检索,其键长和值长均为32位。每个节点128字节,包含15个键以及15个值或16个分支。分支记录为在一个预先申请的节点池中的索引值(索引最多可以使用512GB内存)。因此,可基于节点池中的剩余节点数来判断内存是否充足。一般地,若剩余节点数大于等于预定数值(如8个,当然不限于此),则内存充足,反之,则内存不足。
在以上基础上,步骤S220具体可以包括:首先生成前缀片段的第一索引,在数据索引中查找以该第一索引命名的一级目录,若未查找到、或查到的一级目录被标记为已删除,则停止当前字符串片段的查找,并继续对字符串集中的下一字符串片段进行查找。若查找到该一级目录且该一级目录未被标记为已删除,则生成后缀片段的二级索引,并在该一级目录之下查找以该第二索引命名的二级目录,若未查找到、或查找到的该二级目录的值为预设空值(或被标记为已替换),则停止当前字符串片段的查找,并继续对字符串集中的下一字符串片段进行查找。
随后,在步骤S230中,计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为目标字符串集的最相近字符串集。
在一种实现方式中,在进行相同个数统计时,每查找到一个候选字符串集,则判定该候选字符串集与目标字符串集具有一个相同的目录表示,并为该候选字符串集计数加1,候选字符串集的初始计数为0。例如,对于目标字符串集中的某个字符串片段的目录表示为(2,4),通过(2,4)首次查找到字符串集S1,则认为字符串集S1与目标字符串集有一个相同的目录表示。若之后该目标字符串中一个相同字符串片段的目录表示(2,5)也对应有字符串集S1,则认为字符串集S1与目标字符串集有两个相同的目录表示,以此类推。
在另一种实现方式中,在进行相同个数统计时,从索引树中统计每个候选字符串集所包含的目录表示集合;获取目标字符串集的目录表示集合,并将该集合与每个候选字符串集的目录表示集合对比,以确定其中具有相同目录表示的个数。其中,目标表示集合就是字符串集中每个字符串片段对应的目录表示的集合{(Ip1,Is1),(Ip2,Is2),……,(Ipn,Isn)}Gi,其中,Gi代表字符串集,n代表该字符串集分割出的字符串片段总数,pn和sn分别代表第n个字符串片段的第一索引和第二索引。
当然,步骤S230中还可以基于相同目录个数,对多个候选字符串集进行排序,得到前几个重复高的候选字符串集均作为相近字符串集。此时,用户可以查找到多个相近试题。
对于待查询的目标字符串集A,若查找到的多个符合要求(一级目录未被删除、二级目录未被替换)的候选字符串集包括:
S1:一二三四五,上山打老虎;
S2:一二三四五,下山打老虎;
S3:上山打老虎,一二三四五,六七八九十;
S4:一二三四五六七,我的朋友在哪里;
这四个候选字符串集与字符串集A的相同字符串片段数目分别为6、5、6、2,因此可确定S1和S3重复度最高,S2重复度次之,S4重复度最低且非常低。
根据本发明的一个实施例,方法200还可以对内存索引进行维护更新,从而将新的字符串集添加到内存索引中。在添加内存之前,可以先判断内存是否足够,如果内存不足,则删除当前计数最多的一级目录。之后,对待添加的字符串集进行解析,分割出多个字符串片段。对于其中某字符串片段,生成其前缀片段的第一索引。在内存索引中查询以该第一索引命名的一级目录。
如果该一级目录不存在,则新建该一级目录,并计算后缀片段的第二索引,加入到该一级目录下的二级目录中。如果该一级目录存在但被标记为已删除,则停止当前字符串片段的添加,并继续对字符串集中的下一字符串片段进行添加。如果该一级目录存在且未被标记为已删除,则进行正常添加,计算后缀片段的第二索引,以将其作为该一级目录下的一个新二级目录添加,或与当前已存在的二级目录合并添加。
进一步地,在添加字符串片段的二级目录时,首先查找对应的一级目录下是否已有要添加的二级目录。如果该二级目录不存在,则在该一级目录下新建该二级目录,并加入该二级目录的键值对。如果该二级目录存在但其值为预设空值(或被标记为已替换),则停止添加当前字符串片段,并继续对字符串集中的下一个字符串片段进行添加。如果该二级目录存在且未被替换,则进行正常添加,如作为新的键值对添加,或与当前已存在的键值对合并添加。
另外,当出现故障等情况需要内存重启时,需要重新构建内存索引,因此该内存索引必须能够快速生成。在一种实现方式中,可以预先在本地用可以快速读取的格式保存所有需要加入的字符串集,并记录每个一级目录的项目数(出现该一级目录的次数,也就是该一级目录的计数)、以及该一级目录下每个二级目录的项目数。对二级目录按照项目数进行降序排序,并标记出现次数超过一定预定的键。基于二级项目的项目数,计算需要的节点个数来申请节点池。之后,用排序好的数据快速生成索引树,并释放统计过程中使用的内存空间。
在一种优化方案中,可以在未经使用的B+树节点池中获取一定个数的连续节点组成一个地址连续的大节点,并用这样的节点构成链表用来统计项目。这里直接使用节点池而并未另外申请空间用于统计。排序时使用归并排序,在排序的同时完成二级目录的合并删除操作,并在最后一轮归并时生成最终的B+树。其中,B+树的归序排序和链表统计是目前比较常见的方案,本领域技术人员可以根据需要自行设定实现细节,本发明对此不作限制。
图3示出了根据本发明一个实施例的数据查询装置300的结构框图,该装置300可以驻留在计算设备100中,该计算设备中存储有多个字符串集的数据索引,数据索引包括一级目录和其下的至少一个二级目录,且每个二级目录都标记有所属的字符串集。如图3所示,该装置包括片段提取模块310、候选集查询模块320和相近集确定模块330。
片段提取模块310将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段。片段提取模块310可以进行与上面在步骤S210中描述的处理相对应的处理,这里不再展开赘述。
候选集查询模块320适于生成所述前缀片段的第一索引和所述后缀片段的第二索引,并在数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集。候选集查询模块320可以进行与上面在步骤S220中描述的处理相对应的处理,这里不再展开赘述。
相近集确定模块330适于计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为目标字符串集的最相近字符串集。相近集确定模块330可以进行与上面在步骤S230中描述的处理相对应的处理,这里不再展开赘述。
根据本发明的技术方案,采用逐字符的推进方式,将一个字符串集拆分为多个字符串片段,这多个字符串片段代表该字符串集的逻辑和语义特征。通过将每个字符串片段表示为一级目录和二级目录,将一个字符串集表示为多个字符串片段的目录表示集合。这样,通过将字符串集之间的字符串片段表示进行对比,即可确定最相近字符串集。这种方式获取的结果更为准确,计算精度高,查询效率快,能够向用户返回最相近的试题、段落或文章,提高用户体验。
A8、如A1-A7中任一项所述的方法,其中,所述生成所述前缀片段的第一索引和所述后缀片段的第二索引,并在所述数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集的步骤包括:生成所述前缀片段的第一索引;若所述数据索引中存在以该第一索引命名的一级目录、且该一级目录未被标记为已删除,则生成所述后缀片段的第二索引;反之,则终止查找。A9、如A8所述的方法,其中,在生成所述后缀片段的第二索引之后,还包括步骤:在查找到的一级目录中继续查找以该第二索引命名的二级目录;若未查找到该二级目录,或者所查找的二级目录的值为预设空值,则终止查找。
A10、如A1-A9中任一项所述的方法,其中,所述计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数的步骤包括:每查找到一个候选字符串集,则判定该候选字符串集与所述目标字符串集具有一个相同的目录表示,并为该候选字符串集计数加1。A11、如A2所述的方法,其中,所述计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数的步骤包括:从所述索引树中统计每个候选字符串集所包含的目录表示集合;获取所述目标字符串集的目录表示集合,并将该集合与每个候选字符串集的目录表示集合对比,以确定其中具有相同目录表示的个数。
A12、如A1-A11中任一项所述的方法,其中,所述将待查询的目标字符串集划分为多个字符串片段的步骤包括:将所述目标字符串集进行分句处理,得到多个字符串;基于预定步长,从每个字符串提取多个字符串片段。A13、如A12所述的方法,其中,所述预定步长为1个字符,所述字符串片段的最大长度为4个字符、最小长度为3个字符,所述前缀片段的长度为2个字符。A14、如A1所述的方法,其中,所述第一索引和第二索引均为哈希索引,所述索引树为B+树。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如软盘、CD-ROM、硬盘驱动器或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的数据查询方法。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (17)
1.一种数据查询方法,适于在计算设备中执行,所述计算设备中存储有多个字符串集的数据索引,所述数据索引包括一级目录和其下的至少一个二级目录,且每个二级目录都标记有所属的字符串集,该方法包括步骤:
将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段;
生成所述前缀片段的第一索引和所述后缀片段的第二索引,并在所述数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集;以及
计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为所述目标字符串集的最相近字符串集。
2.如权利要求1所述的方法,其中,所述字符串集为试题,所述候选字符串集为候选试题。
3.如权利要求1所述的方法,其中,所述数据索引表示为索引树。
4.如权利要求1-3中任一项所述的方法,其中,
所述二级目录表示为键值对,其以二级目录的索引值为键、以包含该第一索引和第二索引组成的字符串的字符串集为值,其中该字符串集还标记有在该字符串集中出现该目录表示的次数,作为该字符串集的元素个数。
5.如权利要求4所述的方法,还包括步骤:
统计每个一级目录下的所有二级目录的总元素个数,作为该一级目录的计数;
当某个一级目录的计数达到第一阈值时,删除该一级目录下的所有二级目录,并将该一级目录标记为已删除。
6.如权利要求4所述的方法,还包括步骤:
统计各一级目录下的每个二级目录的总元素个数,作为该二级目录的计数;
当某二级目录的计数达到第二阈值时,将该二级目录下的所有字符串集删除,并用一个预设空值替换。
7.如权利要求6所述的方法,其中,
被删除的一级目录标记有该一级目录的计数;
被替换的二级目录标记有该二级目录的计数。
8.如权利要求1-3中任一项所述的方法,其中,所述生成所述前缀片段的第一索引和所述后缀片段的第二索引,并在所述数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集的步骤包括:
生成所述前缀片段的第一索引;
若所述数据索引中存在以该第一索引命名的一级目录、且该一级目录未被标记为已删除,则生成所述后缀片段的第二索引;反之,则终止查找。
9.如权利要求8所述的方法,其中,在生成所述后缀片段的第二索引之后,还包括步骤:
在查找到的一级目录中继续查找以该第二索引命名的二级目录;
若未查找到该二级目录,或者所查找的二级目录的值为预设空值,则终止查找。
10.如权利要求1-3中任一项所述的方法,其中,所述计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数的步骤包括:
每查找到一个候选字符串集,则判定该候选字符串集与所述目标字符串集具有一个相同的目录表示,并为该候选字符串集计数加1。
11.如权利要求2所述的方法,其中,所述计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数的步骤包括:
从所述索引树中统计每个候选字符串集所包含的目录表示集合;
获取所述目标字符串集的目录表示集合,并将该集合与每个候选字符串集的目录表示集合对比,以确定其中具有相同目录表示的个数。
12.如权利要求1-3中任一项所述的方法,其中,所述将待查询的目标字符串集划分为多个字符串片段的步骤包括:
将所述目标字符串集进行分句处理,得到多个字符串;
基于预定步长,从每个字符串提取多个字符串片段。
13.如权利要求12所述的方法,其中,
所述预定步长为1个字符,所述字符串片段的最大长度为4个字符、最小长度为3个字符,所述前缀片段的长度为2个字符。
14.如权利要求1所述的方法,其中,所述第一索引和第二索引均为哈希索引,所述索引树为B+树。
15.一种数据查询装置,适于驻留在计算设备中,所述计算设备中存储有多个字符串集的数据索引,所述数据索引包括一级目录和其下的至少一个二级目录,且每个二级目录都标记有所属的字符串集,该装置包括:
片段提取模块,适于将待查询的目标字符串集划分为多个字符串片段,并将每个字符串片段划分为前缀片段和后缀片段;
候选集查询模块,适于生成所述前缀片段的第一索引和所述后缀片段的第二索引,并在所述数据索引中查找以该第一索引为一级目录、以该第二索引为二级目录的多个候选字符串集;以及
相近集确定模块,适于计算每个候选字符串集与目标字符串集具有相同目录表示的字符串片段个数,并将相同个数最多的候选字符串集作为所述目标字符串集的最相近字符串集。
16.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-14中任一项所述的方法的指令。
17.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-14任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010271150.1A CN111444413B (zh) | 2020-04-08 | 2020-04-08 | 一种数据查询方法、装置和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010271150.1A CN111444413B (zh) | 2020-04-08 | 2020-04-08 | 一种数据查询方法、装置和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444413A CN111444413A (zh) | 2020-07-24 |
CN111444413B true CN111444413B (zh) | 2023-05-12 |
Family
ID=71654105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010271150.1A Active CN111444413B (zh) | 2020-04-08 | 2020-04-08 | 一种数据查询方法、装置和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444413B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484684A (zh) * | 2016-10-11 | 2017-03-08 | 语联网(武汉)信息技术有限公司 | 一种对数据库中的数据进行术语匹配的方法 |
CN106970936A (zh) * | 2017-02-09 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置、数据查询方法及装置 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100501745C (zh) * | 2007-02-15 | 2009-06-17 | 刘二中 | 电子文本处理与检索的便捷方法和系统 |
US8255398B2 (en) * | 2008-09-30 | 2012-08-28 | International Business Machines Corporation | Compression of sorted value indexes using common prefixes |
CN101464898B (zh) * | 2009-01-12 | 2011-09-21 | 腾讯科技(深圳)有限公司 | 一种提取文本主题词的方法 |
CN101499094B (zh) * | 2009-03-10 | 2010-09-29 | 焦点科技股份有限公司 | 一种数据压缩存储并检索的方法及系统 |
EP2241983B1 (en) * | 2009-04-17 | 2012-12-19 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Method for searching objects in a database |
CN103339624A (zh) * | 2010-12-14 | 2013-10-02 | 加利福尼亚大学董事会 | 支持地理结构数据的交互式模糊搜索的高效前缀搜索算法 |
CN102867049B (zh) * | 2012-09-10 | 2015-02-25 | 山东康威通信技术股份有限公司 | 一种基于单词查找树实现的汉语拼音快速分词方法 |
CN109902142B (zh) * | 2019-02-27 | 2022-09-16 | 西安电子科技大学 | 一种基于编辑距离的字符串模糊匹配和查询方法 |
CN110852046B (zh) * | 2019-10-18 | 2021-11-05 | 中山大学 | 一种文本后缀索引的分块归纳排序方法及系统 |
-
2020
- 2020-04-08 CN CN202010271150.1A patent/CN111444413B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484684A (zh) * | 2016-10-11 | 2017-03-08 | 语联网(武汉)信息技术有限公司 | 一种对数据库中的数据进行术语匹配的方法 |
CN106970936A (zh) * | 2017-02-09 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置、数据查询方法及装置 |
CN110597855A (zh) * | 2019-08-14 | 2019-12-20 | 中山大学 | 一种数据存储方法、终端设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111444413A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10565273B2 (en) | Tenantization of search result ranking | |
US20120323839A1 (en) | Entity recognition using probabilities for out-of-collection data | |
CN112818093B (zh) | 基于语义匹配的证据文档检索方法、系统及存储介质 | |
US9317608B2 (en) | Systems and methods for parsing search queries | |
CN110765761A (zh) | 基于人工智能的合同敏感词校验方法、装置及存储介质 | |
US11741064B2 (en) | Fuzzy search using field-level deletion neighborhoods | |
CN112633000B (zh) | 一种文本中实体的关联方法、装置、电子设备及存储介质 | |
US20120109994A1 (en) | Robust auto-correction for data retrieval | |
CN105404677A (zh) | 一种基于树形结构的检索方法 | |
US20120124060A1 (en) | Method and system of identifying adjacency data, method and system of generating a dataset for mapping adjacency data, and an adjacency data set | |
CN113535642A (zh) | 一种文件搜索方法及计算设备 | |
KR20200013298A (ko) | 형태소 분석을 활용하여 문서를 관리하는 장치 및 이의 동작 방법 | |
CN111444413B (zh) | 一种数据查询方法、装置和计算设备 | |
JP2021101375A (ja) | 辞書構築装置、辞書の生産方法、およびプログラム | |
CN113535883A (zh) | 商业场所实体链接方法、系统、电子设备及存储介质 | |
CN112287676A (zh) | 新词发现方法、装置、电子设备及介质 | |
JP2001101184A (ja) | 構造化文書生成方法及び装置及び構造化文書生成プログラムを格納した記憶媒体 | |
US12026157B2 (en) | Narrowing synonym dictionary results using document attributes | |
CN113642331B (zh) | 金融命名实体识别方法及系统、存储介质及终端 | |
Bakar et al. | An evaluation of retrieval effectiveness using spelling‐correction and string‐similarity matching methods on Malay texts | |
US20230376542A1 (en) | Identifying similar documents in a file repository using unique document signatures | |
CN117851542A (zh) | 信息查询方法、装置、设备、存储介质及程序产品 | |
JP4304226B2 (ja) | 構造化文書管理システム、構造化文書管理方法及びプログラム | |
CN116738228A (zh) | 实体识别模型的训练方法、文本的实体识别方法和设备 | |
CN116975198A (zh) | 信息查询方法、装置、设备和介质 |
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 |