CN105843918A - 一种从职位数据库中快速筛选职位的方法 - Google Patents

一种从职位数据库中快速筛选职位的方法 Download PDF

Info

Publication number
CN105843918A
CN105843918A CN201610174810.8A CN201610174810A CN105843918A CN 105843918 A CN105843918 A CN 105843918A CN 201610174810 A CN201610174810 A CN 201610174810A CN 105843918 A CN105843918 A CN 105843918A
Authority
CN
China
Prior art keywords
character
suffix
index
module
interval
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
Application number
CN201610174810.8A
Other languages
English (en)
Other versions
CN105843918B (zh
Inventor
俞希林
梁星亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qianjin Network Information Technology (shanghai) Co ltd
Original Assignee
Qianjin Network Information Technology (shanghai) Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qianjin Network Information Technology (shanghai) Co ltd filed Critical Qianjin Network Information Technology (shanghai) Co ltd
Priority to CN201610174810.8A priority Critical patent/CN105843918B/zh
Publication of CN105843918A publication Critical patent/CN105843918A/zh
Application granted granted Critical
Publication of CN105843918B publication Critical patent/CN105843918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种从职位数据库中快速筛选职位的方法,该方法涉及到职位数据库、职位索引生成器、职位检索服务器和Web客户端,所述职位索引生成器通过开放数据库互连连接职位数据库,职位索引生成器根据职位数据库中的职位数据以基于后缀数组的索引结构生成索引文件,并将生成的索引文件分发至职位检索服务器,职位检索服务器通过套接字与Web客户端相连接,Web客户端将查询请求通过套接字发送给职位检索服务器,职位检索服务器检索索引文件,并将检索的结果通过套接字返回Web客户端进行显示。本发明能够实现职位数据库内所有职位快速有效的检索,在保证检索准确性的前提下大幅提高了检索速度。

Description

一种从职位数据库中快速筛选职位的方法
技术领域
本发明属于信息检索技术领域,具体涉及一种从职位数据库中快速筛选职位的方法。
背景技术
在招聘领域中,大部分网站采用传统的数据库检索技术或者搜索引擎技术实现职位数据的检索。对于职位数据量大且频繁更新的情况,使用传统的数据库检索技术进行职位检索时,检索性能下降明显,检索耗时长,使用搜索引擎技术进行职位检索时,难以对检索结果大范围地根据相关度动态评分进行排序,检索结果准确度低。这将使得用户难以快速准确地获取职位信息,严重伤害了用户体验。
在目前的技术条件下,难以直接通过硬件扩展的方式大幅度提高检索性能,并且硬件扩展和升级的成本较高。从检索方法上提高检索性能存在的问题主要在于以下两点:第一是职位数据库数据量大,检索速度慢;第二是检索结果较多,即时排序耗时长,难以采用相关度动态评分因素对检索结果进行相关度动态计算,导致检索结果不准确。
发明内容
针对现有技术中存在的问题,本发明提供一种从职位数据库中快速筛选职位的方法,从而实现对职位数据库内所有职位快速有效的检索。
为实现上述目的,本发明采用以下技术方案:
一种从职位数据库中快速筛选职位的方法,该方法涉及到职位数据库、职位索引生成器、职位检索服务器和Web客户端,所述职位索引生成器通过开放数据库互连连接职位数据库,职位索引生成器根据职位数据库中的职位数据以基于后缀数组的索引结构生成索引文件,并将生成的索引文件分发至职位检索服务器,职位检索服务器通过套接字与Web客户端相连接,Web客户端将查询请求通过套接字发送给职位检索服务器,职位检索服务器检索索引文件,并将检索的结果通过套接字返回Web客户端进行显示。
所述职位数据库采用MySQL5.5.20。
所述职位索引生成器的工作流程为:首先进行职位索引生成器初始化过程模块,初始化后进行职位数据库连接开启过程模块,通过开放数据库互连进行职位数据库连接,并从职位数据库读取职位数据,进行索引生成过程模块后生成索引文件,通过分发过程模块将索引文件分发给各职位检索服务器,之后进行职位数据库连接关闭过程模块关闭职位数据库连接,完成职位索引生成器流程。
所述索引生成过程模块包括索引状态区生成过程模块,前向索引生成过程模块,后向索引生成过程模块和头信息生成过程模块。
本实施例中,头信息表示文档数量、有效文档数量、文档大小;索引状态区表示文档的有效性;前向索引用于结构化数据的索引,包括月薪范围、公司性质、工作年限、学历要求、公司规模、发布日期、工作类型等结构化字段,每个字段的值都取自有限范围中的一个值,可根据每个值的取值范围用有限的比特位表示,从而编码到一个uint32整型变量中,在一定程度上减少数据存储量;后向索引用于文本数据的索引,按照职位名检索、公司名检索、全文检索三种方式分别创建索引。在生成索引时按照检索方式对应的字段单独创建后缀数组,分别对应职位名搜索、公司名搜索、全文搜索(包括职位名搜索、公司名搜索和职位描述搜索);将文本数据按后缀数组的排序结果进行BWT变换,并以Wavelet Matrix结构进行存储,从而实现查询关键字在后缀数组中的快速查询。
本实施例中后向索引生成过程模块包括以下三个步骤:
第一步:后缀数组生成过程模块:所述后缀数组获取过程为:
a、假设原始文本为字符串S,长度为n,字符序号从0开始编,从第i个字符到第n-1个字符的子序列即字符串S为第i个后缀,其中,0≤i<n,对于长度为n的字符串S共有n个后缀,
b、将n个后缀进行编号,
c、将n个后缀进行排序,排序规则如下:以n个后缀的第一个字符作为排序关键字,按编码值顺序从小到大进行排序;当第一个字符相同时,将第二个字符作为排序关键字,按编码值顺序从小到大进行排序;依此类推,
d、按后缀的排序结果将每个后缀的后缀编号保存为后缀数组SA,即后缀数组;
第二步:BWT变换过程模块:按后缀数组SA的顺序取后缀在原始文本字符串S中的前一个字符,即原始文本字符串S进行BWT变换后的文本字符串S_BWT,利用S_BWT能快速查询关键字在后缀数组SA中的区间,该区间对应的后缀均以该关键字开始,查询过程如下:
a、假设当前的检索词为abcd,字符d开头的后缀在SA中的区间为[u, v),该区间可以预先计算并记录,若能求解字符串cd在SA中的区间[u’, v’),即可通过迭代求解字符串abcd在SA中的区间,
b、假设以字符c开头的后缀在SA中的区间为[p, t),该区间可以预先计算并记录,
c、第一个以字符串cd开头的后缀在SA中的起始位置可以表示为u’=p+∑N(x),其中,x表示任意编码比d小的字符串,即比SA[u]对应的字符串小的字符串,∑N(x)表示以x开头的后缀个数求和。∑N(x)等于S_BWT的[0, u)区间中字符c出现的个数,∑N(x)可以通过Wavelet Matrix的存储结构进行快速计算,即可求解第一个以字符串cd开头的后缀在SA中的起始位置u’=p+∑N(x),
d、同样的,可以求解第一个不以字符串cd开头的后缀在SA区间[u’, +∞)中的起始位置v’,由于第一个不以字符串d开头的后缀在SA中的区间[u, +∞)的起始位置为v,只要求解S_BWT在[0, v)区间中字符c出现的个数,即可求解第一个不以字符串cd开头的后缀在SA区间[u’, +∞)中的起始位置v’= p+∑N(y),其中,y表示任意编码比SA[v]对应的字符串小的字符串,∑N(y)表示以y开头的后缀个数求和,
e、重复上述过程,可以迭代求解字符串abcd在SA中的区间,同理,通过迭代可快速求解任意字符串在SA中的区间;
第三步:Wavelet Matrix结构生成过程模块:所述Wavelet Matrix结构是将字母表中字符编码按顺序排列后,递归的将低半部分编码为0,高半部分编码为1,并将每一层分为左右两部分,使得0分支放在一起,1分支放在一起,形成一个编码二叉树,利用WaveletMatrix结构可以快速计算出字符数组中从0位置到任意位置某个字符出现的次数,通过在BWT变换后的文本字符串S_BWT中计算某个字符出现的次数,可以实现关键字在后缀数组SA中区间的快速查询,通过Wavelet Matrix结构实现快速查询过程如下:
a、定义Wavelet Matrix结构第一层的一个节点是{ null | * },第二层的2个节点是{ 0* | 1* },第三层的4个节点是{ 00*,10* | 01*,11* },第四层的8个节点是{ 000*,100*,010*,110* | 001*,101*,011*,111* },依此类推。其中,‘*’表示只记录该比特,即第一层的{ * }为原文本中的每个字符编码的第1个比特取出来组成的数组,‘01*’表示原文本中以‘01’开头的所有字符的第3个比特取出来组成的数组,
b、Wavelet Matrix结构中,下一层的左半部分是上一层的全部“0-子分类”,下一层的右半部分是上一层的全部“1-子分类”。每半部分的节点排序规则为:每半部分的每个节点的编码顺序反转后按二进制从小到大的顺序进行排列,得到该半部分的节点排序。例如第四层左半部分为“000*,100*,010*,110*”,编码顺序反转后为“*000,*001,*010,*011”,是按二进制从小到大的顺序进行排列的,
c、假设每个字符编码为5位,则最后一层每个节点的编码顺序为: { 00000,10000,01000,11000,00100,10100,01100,11100,00010,10010,01010,11010,00110,10110,01110,11110 | 00001,10001,01001,11001,00101,10101,01101,11101,00011,10011,01011,11011,00111,10111,01111,11111},只需存储起始位置和每个编码相较于起始位置的偏移,以offset表示,即offset(00000)=0,offset(10000) =count(00000) ,offset(01000) = count(00000)+count(10000),依此类推,
d、假设每个字符编码为5位,将每一层的全部节点组成一个比特数组,分别定义为Layer1,Layer2,Layer3,Layer4,Layer5 分别计算每一层左半部分的比特数,并定义为LeftCount1,LeftCount2,LeftCount3,LeftCount4,LeftCount5,
e、定义LeftAdd为某节点左侧的所有节点编码计数,即LeftAdd(01*)表示01*左边的所有节点编码计数,若该节点在最后一层,则为该节点偏移,即LeftAdd(01000*) = offset(01000),
f、定义rank0(A,<=n) 表示比特数组A中前n个比特中‘0’的个数,rank1(A,<=n) 表示比特数组A中前n个比特中‘1’的个数,则成立rank0(A,<=n) + rank1(A,<=n) = n,
g、定义count(C,<=m) 表示文本前 m 个字符中属于字符编码C的字符的个数,
h、假设待查找的字符编码为‘01101’,则求解count(01101,<=m)可得到该字符在文本前 m 个字符中出现的次数,下述公式成立:
x1=rank0(Layer1,<=m)=count(0*,<=m);
x2=rank1(Layer2,<=x1)+LeftCount3=LeftAdd(01*)+ count(01*,<=m);
x3=rank1(Layer3,<=x2)+LeftCount4=LeftAdd(011*)+ count(011*,<=m);
x4=rank0(Layer4,<=x3) = LeftAdd(0110*) + count(0110*,<=m);
x5=rank1(Layer5,<=x4)+LeftCount6=LeftAdd(01101*)+ count(01101*,<=m) =offset(01101) + count(01101,<=m),
其中,当该比特为‘1’时,需要加相应的左半部分比特数,当该比特为‘0’时,则不需要加左半部分比特数,由于rank0(A,<=n)+ rank1(A,<=n) = n,可通过求解rank0(A,<=n)或rank1(A,<=n)迭代快速求解x1~x5,偏移offset(01101)可以预先计算,因此可以快速求解count(01101,<=m) = x5 - offset(01101),从而实现对任意字符在任意位置区间中出现次数的求解。
所述职位检索服务器的工作流程图为:所述职位检索服务器包括三个线程:主线程模块、搜索线程模块和更新线程模块,首先进行职位检索服务器初始化过程模块,之后通过索引加载过程模块加载索引文件,加载索引文件后创建并启动主线程模块、搜索线程模块和更新线程模块,主线程模块通过套接字在指定端口监听Web客户端的查询请求判断模块,若查询请求判断模块的判断结果为“是”,则将查询请求判断模块转给搜索线程模块并继续监听,若查询请求判断模块的判断结果为“否”,则继续监听。
所述搜索线程模块接收Web客户端的查询请求后工作过程包括以下步骤:
a、通过字符串解析过程模块解析查询字符串,
b、通过字符串查询过程模块根据查询字符串中的查询字段和关键字,查找相应的字段,得到匹配的文档列表集合,
c、通过文档列表生成过程模块对文档列表集合中每个文档过滤其前项索引,得到最终符合条件的文档列表集合,
d、通过相关度动态计算过程模块(27)对符合条件的文档列表集合中的文档进行动态相关度计算,所述相关度动态计算是指在对职位数据的检索结果进行评分时,采用包含字段评分和首发时间的动态因素的评分策略,对检索结果进行即时的相关度计算,评分策略包括字段评分和首发时间评分,所述字段评分是根据关键字检索结果所在的字段赋予不同的分数,所述字段包括:职位名、公司名、职位描述,职位名分数高于公司名分数,公司名分数高于职位描述分数,采用0~255的256个整数值作为字段评分的评分区间;所述首发时间评分是根据职位的首次发布时间赋予不同的分数,计算职位首发时间与当前时间的时间差,距离当前时间越近,即时间差越小,分数越高,采用0~255的256个整数值作为职位首发时间的评分区间,通过分数列表排序可快速实现职位首发时间动态评分的排序,
e、通过分数列表排序过程模块(28)快速实现相关度评分的排序,生成结果集合,所述分数列表排序是指在对职位进行评分时,将职位按照其字段评分和首发时间评分归并到对应的评分区间0~65535的65536个整数值,生成评分区间内任一分数值对应的所有职位集合,由于职位数据库中的职位数据按照发布时间进行降序排列,并以降序读取,因此任一分数值对应的所有职位集合内部都是有序的,即该分数值对应的职位集合内部按发布时间降序排列,距离当前时间越近顺序越靠前,根据分数列表的性质,只需要按照分数从高到低、在同一分数内部从前到后取出一定数量的结果即可,从而通过分数列表提高排序速度;
f、根据查询字符串中所需的返回结果数量,通过结果返回过程模块将相应的结果集合以及结果的统计信息返回给Web客户端。
所述更新线程模块监听索引文件的更新请求,若更新请求判断模块的判断结果为“是”,则进行更新并继续监听,若更新请求判断模块的判断结果为“否”,则继续监听;进行更新时,首先通过删除无效索引过程模块删除无效索引,然后通过增量更新索引过程模块对索引块进行增量更新,最后通过清理无效数据过程模块清理现有块中的无效数据;当更新线程模块进行索引更新时,该服务器停止检索服务,在此期间的查询请求将转发到备份服务器进行检索,完成职位检索服务器工作过程。
与现有技术相比,本发明的有益效果为:
①本发明采用基于后缀数组的索引结构生成索引文件,根据职位数据库中的职位数据生成后缀数组,将职位数据按后缀数组的排序结果进行Burrows-Wheeler变换(即BWT变换),并以Wavelet Matrix结构对索引文件进行存储,可以通过迭代实现查询关键字在后缀数组中的快速查询,显著提高了检索速度;②本发明通过主线程监听Web客户端的查询请求,将查询请求转给搜索线程进行检索,并对检索结果进行相关度动态计算,根据相关度的评分将检索结果通过分数列表排序并显示在Web客户端,并利用更新线程监听索引文件,对索引文件进行增量更新,从而实现对职位数据库内所有职位快速有效的检索;③本发明对检索结果相关度评分通过分数列表快速实现检索结果相关度评分的排序,排序速度快,使得相关度动态计算的实时性成为了可能,在检索过程中能够采用包含动态因素的评分策略,将职位的发布日期等动态因素作为评分依据,显著提高了检索结果的准确性。
附图说明
图1是本发明从职位数据库中快速筛选职位的方法的整体流程结构图。
图2是本发明中职位索引生成器工作流程图。
图3是本发明中职位检索服务器工作流程图。
图中标号:2—职位数据库,3—职位索引生成器,4—职位检索服务器,5—Web客户端,6—职位索引生成器初始化过程模块,7—职位数据库连接开启过程模块,8—索引生成过程模块,9—索引状态区生成过程模块,10—前向索引生成过程模块,11—后向索引生成过程模块,12—后缀数组生成过程模块,13—BWT变换过程模块,14—Wavelet Matrix结构生成过程模块,15—头信息生成过程模块;16—分发过程模块,17—职位数据库连接关闭过程模块;18—职位检索服务器初始化过程模块,19—索引加载过程模块,20—主线程模块,21—搜索线程模块,22—更新线程模块;23—查询请求判断模块,24—字符串解析过程模块,25—字符串查询过程模块,26—文档列表生成过程模块,27—相关度动态计算过程模块,28—分数列表排序过程模块,29—结果返回过程模块;30—更新请求判断模块,31—删除无效索引过程模块,32—增量更新索引过程模块,33—清理无效数据过程模块。
具体实施方式
下面结合具体实施例并参照说明书附图,对本发明从职位数据库中快速筛选职位的方法的整体思路和工作过程进行说明。
如图1所示,本实施例从职位数据库中快速筛选职位的方法,该方法包括职位数据库2、职位索引生成器3、职位检索服务器4和Web客户端5,所述职位索引生成器3通过开放数据库互连连接职位数据库2,职位索引生成器3根据职位数据库2中的职位数据以基于后缀数组的索引结构生成索引文件,并将生成的索引文件分发至职位检索服务器4,职位检索服务器4通过套接字与Web客户端5相连接,Web客户端5将查询请求通过套接字发送给职位检索服务器4,职位检索服务器4检索索引文件,并将检索的结果通过套接字返回Web客户端5进行显示,职位数据库2采用MySQL5.5.20。
如图2所示,本实施例职位索引生成器3的工作流程为:首先进行职位索引生成器初始化过程模块6,初始化后进行职位数据库连接开启过程模块7,通过开放数据库互连进行职位数据库连接,并从职位数据库读取职位数据,进行索引生成过程模块8后生成索引文件,通过分发过程模块16将索引文件分发给各职位检索服务器,之后进行职位数据库连接关闭过程模块17关闭职位数据库连接,完成职位索引生成器流程,其中索引生成过程模块8包括索引状态区生成过程模块9,前向索引生成过程模块10,后向索引生成过程模块11和头信息生成过程模块15,所述后向索引生成过程模块11包括以下三个步骤:
第一步:后缀数组生成过程模块12:所述后缀数组获取过程为:
a、假设原始文本为字符串S,长度为n,字符序号从0开始编,从第i个字符到第n-1个字符的子序列即字符串S为第i个后缀,其中,0≤i<n,对于长度为n的字符串S共有n个后缀,
b、将n个后缀进行编号,
c、将n个后缀进行排序,排序规则如下:以n个后缀的第一个字符作为排序关键字,按编码值顺序从小到大进行排序;当第一个字符相同时,将第二个字符作为排序关键字,按编码值顺序从小到大进行排序;依此类推,
d、按后缀的排序结果将每个后缀的后缀编号保存为后缀数组SA,即后缀数组;
第二步:BWT变换过程模块13:按后缀数组SA的顺序取后缀在原始文本字符串S中的前一个字符,即原始文本字符串S进行BWT变换后的文本字符串S_BWT,利用S_BWT能快速查询关键字在后缀数组SA中的区间,该区间对应的后缀均以该关键字开始,查询过程如下:
a、假设当前的检索词为abcd,字符d开头的后缀在SA中的区间为[u, v),该区间可以预先计算并记录,若能求解字符串cd在SA中的区间[u’, v’),即可通过迭代求解字符串abcd在SA中的区间,
b、假设以字符c开头的后缀在SA中的区间为[p, t),该区间可以预先计算并记录,
c、第一个以字符串cd开头的后缀在SA中的起始位置可以表示为u’=p+∑N(x),其中,x表示任意编码比d小的字符串,即比SA[u]对应的字符串小的字符串,∑N(x)表示以x开头的后缀个数求和。∑N(x)等于S_BWT的[0, u)区间中字符c出现的个数,∑N(x)可以通过Wavelet Matrix的存储结构进行快速计算,即可求解第一个以字符串cd开头的后缀在SA中的起始位置u’=p+∑N(x),
d、同样的,可以求解第一个不以字符串cd开头的后缀在SA区间[u’, +∞)中的起始位置v’,由于第一个不以字符串d开头的后缀在SA中的区间[u, +∞)的起始位置为v,只要求解S_BWT在[0, v)区间中字符c出现的个数,即可求解第一个不以字符串cd开头的后缀在SA区间[u’, +∞)中的起始位置v’= p+∑N(y),其中,y表示任意编码比SA[v]对应的字符串小的字符串,∑N(y)表示以y开头的后缀个数求和,
e、重复上述过程,可以迭代求解字符串abcd在SA中的区间。同理,通过迭代可快速求解任意字符串在SA中的区间;
第三步:Wavelet Matrix结构生成过程模块14:所述Wavelet Matrix结构是将字母表中字符编码按顺序排列后,递归的将低半部分编码为0,高半部分编码为1,并将每一层分为左右两部分,使得0分支放在一起,1分支放在一起,形成一个编码二叉树,利用WaveletMatrix结构可以快速计算出字符数组中从0位置到任意位置某个字符出现的次数,通过在BWT变换后的文本字符串S_BWT中计算某个字符出现的次数,可以实现关键字在后缀数组SA中区间的快速查询,通过Wavelet Matrix结构实现快速查询过程如下:
a、定义Wavelet Matrix结构第一层的一个节点是{ null | * },第二层的2个节点是{ 0* | 1* },第三层的4个节点是{ 00*,10* | 01*,11* },第四层的8个节点是{ 000*,100*,010*,110* | 001*,101*,011*,111* },依此类推。其中,‘*’表示只记录该比特,即第一层的{ * }为原文本中的每个字符编码的第1个比特取出来组成的数组,‘01*’表示原文本中以‘01’开头的所有字符的第3个比特取出来组成的数组,
b、Wavelet Matrix结构中,下一层的左半部分是上一层的全部“0-子分类”,下一层的右半部分是上一层的全部“1-子分类”。每半部分的节点排序规则为:每半部分的每个节点的编码顺序反转后按二进制从小到大的顺序进行排列,得到该半部分的节点排序。例如第四层左半部分为“000*,100*,010*,110*”,编码顺序反转后为“*000,*001,*010,*011”,是按二进制从小到大的顺序进行排列的,
c、假设每个字符编码为5位,则最后一层每个节点的编码顺序为: { 00000,10000,01000,11000,00100,10100,01100,11100,00010,10010,01010,11010,00110,10110,01110,11110 | 00001,10001,01001,11001,00101,10101,01101,11101,00011,10011,01011,11011,00111,10111,01111,11111},只需存储起始位置和每个编码相较于起始位置的偏移,以offset表示,即offset(00000)=0,offset(10000) =count(00000) ,offset(01000) = count(00000)+count(10000),依此类推,
d、假设每个字符编码为5位,将每一层的全部节点组成一个比特数组,分别定义为Layer1,Layer2,Layer3,Layer4,Layer5 分别计算每一层左半部分的比特数,并定义为LeftCount1,LeftCount2,LeftCount3,LeftCount4,LeftCount5,
e、定义LeftAdd为某节点左侧的所有节点编码计数,即LeftAdd(01*)表示01*左边的所有节点编码计数,若该节点在最后一层,则为该节点偏移,即LeftAdd(01000*) = offset(01000),
f、定义rank0(A,<=n) 表示比特数组A中前n个比特中‘0’的个数,rank1(A,<=n) 表示比特数组A中前n个比特中‘1’的个数,则成立rank0(A,<=n) + rank1(A,<=n) = n,
g、定义count(C,<=m) 表示文本前 m 个字符中属于字符编码C的字符的个数,
h、假设待查找的字符编码为‘01101’,则求解count(01101,<=m)可得到该字符在文本前 m 个字符中出现的次数,下述公式成立:
x1=rank0(Layer1,<=m)=count(0*,<=m);
x2=rank1(Layer2,<=x1)+LeftCount3=LeftAdd(01*)+ count(01*,<=m);
x3=rank1(Layer3,<=x2)+LeftCount4=LeftAdd(011*)+ count(011*,<=m);
x4=rank0(Layer4,<=x3) = LeftAdd(0110*) + count(0110*,<=m);
x5=rank1(Layer5,<=x4)+LeftCount6=LeftAdd(01101*)+ count(01101*,<=m) =offset(01101) + count(01101,<=m),
其中,当该比特为‘1’时,需要加相应的左半部分比特数,当该比特为‘0’时,则不需要加左半部分比特数,由于rank0(A,<=n)+ rank1(A,<=n) = n,可通过求解rank0(A,<=n)或rank1(A,<=n)迭代快速求解x1~x5,偏移offset(01101)可以预先计算,因此可以快速求解count(01101,<=m) = x5 - offset(01101),从而实现对任意字符在任意位置区间中出现次数的求解。
如图3所示,本实施例职位检索服务器4的工作流程图为:所述职位检索服务器4包括三个线程:主线程模块20、搜索线程模块21和更新线程模块22,首先进行职位检索服务器初始化过程模块18,之后通过索引加载过程模块19加载索引文件,加载索引文件后创建并启动主线程模块20、搜索线程模块21和更新线程模块22,主线程模块20通过套接字在指定端口监听Web客户端的查询请求判断模块23,若查询请求判断模块23的判断结果为“是”,则将查询请求判断模块23转给搜索线程模块21并继续监听,若查询请求判断模块23的判断结果为“否”,则继续监听,其中搜索线程模块21接收Web客户端的查询请求后工作过程包括以下步骤:
a、通过字符串解析过程模块24解析查询字符串,
b、通过字符串查询过程模块25根据查询字符串中的查询字段和关键字,查找相应的字段,得到匹配的文档列表集合,
c、通过文档列表生成过程模块26对文档列表集合中每个文档过滤其前项索引,得到最终符合条件的文档列表集合,
d、通过相关度动态计算过程模块(27)对符合条件的文档列表集合中的文档进行动态相关度计算,所述相关度动态计算是指在对职位数据的检索结果进行评分时,采用包含字段评分和首发时间的动态因素的评分策略,对检索结果进行即时的相关度计算,评分策略包括字段评分和首发时间评分,所述字段评分是根据关键字检索结果所在的字段赋予不同的分数,所述字段包括:职位名、公司名、职位描述,职位名分数高于公司名分数,公司名分数高于职位描述分数,采用0~255的256个整数值作为字段评分的评分区间;所述首发时间评分是根据职位的首次发布时间赋予不同的分数,计算职位首发时间与当前时间的时间差,距离当前时间越近,即时间差越小,分数越高,采用0~255的256个整数值作为职位首发时间的评分区间,通过分数列表排序可快速实现职位首发时间动态评分的排序,
e、通过分数列表排序过程模块(28)快速实现相关度评分的排序,生成结果集合,所述分数列表排序是指在对职位进行评分时,将职位按照其字段评分和首发时间评分归并到对应的评分区间0~65535的65536个整数值,生成评分区间内任一分数值对应的所有职位集合,由于职位数据库中的职位数据按照发布时间进行降序排列,并以降序读取,因此任一分数值对应的所有职位集合内部都是有序的,即该分数值对应的职位集合内部按发布时间降序排列,距离当前时间越近顺序越靠前,根据分数列表的性质,只需要按照分数从高到低、在同一分数内部从前到后取出一定数量的结果即可,从而通过分数列表提高排序速度;
f、根据查询字符串中所需的返回结果数量,通过结果返回过程模块29将相应的结果集合以及结果的统计信息返回给Web客户端。
本实施例中更新线程模块22监听索引文件的更新请求,若更新请求判断模块30的判断结果为“是”,则进行更新并继续监听,若更新请求判断模块30的判断结果为“否”,则继续监听;进行更新时,首先通过删除无效索引过程模块31删除无效索引,然后通过增量更新索引过程模块32对索引块进行增量更新,最后通过清理无效数据过程模块33清理现有块中的无效数据;当更新线程模块22进行索引更新时,该服务器停止检索服务,在此期间的查询请求将转发到备份服务器进行检索,完成职位检索服务器工作过程。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或者替换,都应涵盖在发明的保护范围之内。因此,本发明的保护范围应该以权利要求书要求所界定的保护范围为准。

Claims (8)

1.一种从职位数据库中快速筛选职位的方法,其特征在于,该方法中涉及到职位数据库(2)、职位索引生成器(3)、职位检索服务器(4)和Web客户端(5),所述职位索引生成器(3)通过开放数据库互连连接职位数据库(2),职位索引生成器(3)根据职位数据库(2)中的职位数据以基于后缀数组的索引结构生成索引文件,并将生成的索引文件分发至职位检索服务器(4),职位检索服务器(4)通过套接字与Web客户端(5)相连接,Web客户端(5)将查询请求通过套接字发送给职位检索服务器(4),职位检索服务器(4)检索索引文件,并将检索的结果通过套接字返回Web客户端(5)进行显示。
2.根据权利要求1所述的从职位数据库中快速筛选职位的方法,其特征在于,所述职位数据库(2)采用MySQL5.5.20。
3.根据权利要求1所述的从职位数据库中快速筛选职位的方法,其特征在于,所述职位索引生成器(3)的工作流程为:首先进行职位索引生成器初始化过程模块(6),初始化后进行职位数据库连接开启过程模块(7),通过开放数据库互连进行职位数据库连接,并从职位数据库读取职位数据,进行索引生成过程模块(8)后生成索引文件,通过分发过程模块(16)将索引文件分发给各职位检索服务器,之后进行职位数据库连接关闭过程模块(17)关闭职位数据库连接,完成职位索引生成器流程。
4.根据权利要求3所述的从职位数据库中快速筛选职位的方法,其特征在于,所述索引生成过程模块(8)包括索引状态区生成过程模块(9),前向索引生成过程模块(10),后向索引生成过程模块(11)和头信息生成过程模块(15)。
5.根据权利要求4所述的从职位数据库中快速筛选职位的方法,其特征在于,所述后向索引生成过程模块(11)包括以下三个步骤:
第一步:后缀数组生成过程模块(12):所述后缀数组获取过程为:
a、假设原始文本为字符串S,长度为n,字符序号从0开始编,从第i个字符到第n-1个字符的子序列即字符串S为第i个后缀,其中,0≤i<n,对于长度为n的字符串S共有n个后缀,
b、将n个后缀进行编号,
c、将n个后缀进行排序,排序规则如下:以n个后缀的第一个字符作为排序关键字,按编码值顺序从小到大进行排序;当第一个字符相同时,将第二个字符作为排序关键字,按编码值顺序从小到大进行排序;依此类推,
d、按后缀的排序结果将每个后缀的后缀编号保存为后缀数组SA,即后缀数组;
第二步:BWT变换过程模块(13):按后缀数组SA的顺序取后缀在原始文本字符串S中的前一个字符,即原始文本字符串S进行BWT变换后的文本字符串S_BWT,利用S_BWT能快速查询关键字在后缀数组SA中的区间,该区间对应的后缀均以该关键字开始,查询过程如下:
a、假设当前的检索词为abcd,字符d开头的后缀在SA中的区间为[u, v),该区间可以预先计算并记录,若能求解字符串cd在SA中的区间[u’, v’),即可通过迭代求解字符串abcd在SA中的区间,
b、假设以字符c开头的后缀在SA中的区间为[p, t),该区间可以预先计算并记录,
c、第一个以字符串cd开头的后缀在SA中的起始位置可以表示为u’=p+∑N(x),其中,x表示任意编码比d小的字符串,即比SA[u]对应的字符串小的字符串,∑N(x)表示以x开始的后缀个数求和,∑N(x)等于S_BWT的[0, u)区间中字符c出现的个数,∑N(x)可以通过Wavelet Matrix的存储结构进行快速计算,即可求解第一个以字符串cd开头的后缀在SA中的起始位置u’=p+∑N(x),
d、同样的,可以求解第一个不以字符串cd开头的后缀在SA区间[u’, +∞)中的起始位置v’,由于第一个不以字符串d开头的后缀在SA中的区间[u, +∞)的起始位置为v,只要求解S_BWT在[0, v)区间中字符c出现的个数,即可求解第一个不以字符串cd开头的后缀在SA区间[u’, +∞)中的起始位置v’= p+∑N(y),其中,y表示任意编码比SA[v]对应的字符串小的字符串,∑N(y)表示以y开头的后缀个数求和,
e、重复上述过程,可以迭代求解字符串abcd在SA中的区间,同理,通过迭代可快速求解任意字符串在SA中的区间;
第三步:Wavelet Matrix结构生成过程模块(14):所述Wavelet Matrix结构是将字母表中字符编码按顺序排列后,递归的将低半部分编码为0,高半部分编码为1,并将每一层分为左右两部分,使得0分支放在一起,1分支放在一起,形成一个编码二叉树,利用WaveletMatrix结构可以快速计算出字符数组中从0位置到任意位置某个字符出现的次数,通过在BWT变换后的文本字符串S_BWT中计算某个字符出现的次数,可以实现关键字在后缀数组SA中区间的快速查询,通过Wavelet Matrix结构实现快速查询过程如下:
a、定义Wavelet Matrix结构第一层的一个节点是{ null | * },第二层的2个节点是{ 0* | 1* },第三层的4个节点是{ 00*,10* | 01*,11* },第四层的8个节点是{ 000*,100*,010*,110* | 001*,101*,011*,111* },依此类推,其中,‘*’表示只记录该比特,即第一层的{ * }为原文本中的每个字符编码的第1个比特取出来组成的数组,‘01*’表示原文本中以‘01’开头的所有字符的第3个比特取出来组成的数组,
b、Wavelet Matrix结构中,下一层的左半部分是上一层的全部“0-子分类”,下一层的右半部分是上一层的全部“1-子分类”,每半部分的节点排序规则为:每半部分的每个节点的编码顺序反转后按二进制从小到大的顺序进行排列,得到该半部分的节点排序,
c、假设每个字符编码为5位,则最后一层每个节点的编码顺序为: { 00000,10000,01000,11000,00100,10100,01100,11100,00010,10010,01010,11010,00110,10110,01110,11110 | 00001,10001,01001,11001,00101,10101,01101,11101,00011,10011,01011,11011,00111,10111,01111,11111},只需存储起始位置和每个编码相较于起始位置的偏移,以offset表示,即offset(00000)=0,offset(10000) =count(00000) ,offset(01000) = count(00000)+count(10000),依此类推,
d、假设每个字符编码为5位,将每一层的全部节点组成一个比特数组,分别定义为Layer1,Layer2,Layer3,Layer4,Layer5 分别计算每一层左半部分的比特数,并定义为LeftCount1,LeftCount2,LeftCount3,LeftCount4,LeftCount5,
e、定义LeftAdd为某节点左侧的所有节点编码计数,即LeftAdd(01*)表示01*左边的所有节点编码计数,若该节点在最后一层,则为该节点偏移,即LeftAdd(01000*) = offset(01000),
f、定义rank0(A,<=n) 表示比特数组A中前n个比特中‘0’的个数,rank1(A,<=n) 表示比特数组A中前n个比特中‘1’的个数,则成立rank0(A,<=n) + rank1(A,<=n) = n,
g、定义count(C,<=m) 表示文本前 m 个字符中属于字符编码C的字符的个数,
h、假设待查找的字符编码为‘01101’,则求解count(01101,<=m)可得到该字符在文本前 m 个字符中出现的次数,下述公式成立:
x1=rank0(Layer1,<=m)=count(0*,<=m);
x2=rank1(Layer2,<=x1)+LeftCount3=LeftAdd(01*)+ count(01*,<=m);
x3=rank1(Layer3,<=x2)+LeftCount4=LeftAdd(011*)+ count(011*,<=m);
x4=rank0(Layer4,<=x3) = LeftAdd(0110*) + count(0110*,<=m);
x5=rank1(Layer5,<=x4)+LeftCount6=LeftAdd(01101*)+ count(01101*,<=m) =offset(01101) + count(01101,<=m),
其中,当该比特为‘1’时,需要加相应的左半部分比特数,当该比特为‘0’时,则不需要加左半部分比特数,由于rank0(A,<=n)+ rank1(A,<=n) = n,可通过求解rank0(A,<=n)或rank1(A,<=n)迭代快速求解x1~x5,偏移offset(01101)可以预先计算,因此可以快速求解count(01101,<=m) = x5 - offset(01101),从而实现对任意字符在任意位置区间中出现次数的求解。
6.根据权利要求1所述的从职位数据库中快速筛选职位的方法,其特征在于,所述职位检索服务器(4)的工作流程图为:所述职位检索服务器(4)包括三个线程:主线程模块(20)、搜索线程模块(21)和更新线程模块(22),首先进行职位检索服务器初始化过程模块(18),之后通过索引加载过程模块(19)加载索引文件,加载索引文件后创建并启动主线程模块(20)、搜索线程模块(21)和更新线程模块(22),主线程模块(20)通过套接字在指定端口监听Web客户端的查询请求判断模块(23),若查询请求判断模块(23)的判断结果为“是”,则将查询请求判断模块(23)转给搜索线程模块(21)并继续监听,若查询请求判断模块(23)的判断结果为“否”,则继续监听。
7.根据权利要求6所述的从职位数据库中快速筛选职位的方法,其特征在于,所述搜索线程模块(21)接收Web客户端的查询请求后工作过程包括以下步骤:
a、通过字符串解析过程模块(24)解析查询字符串,
b、通过字符串查询过程模块(25)根据查询字符串中的查询字段和关键字,查找相应的字段,得到匹配的文档列表集合,
c、通过文档列表生成过程模块(26)对文档列表集合中每个文档过滤其前项索引,得到最终符合条件的文档列表集合,
d、通过相关度动态计算过程模块(27)对符合条件的文档列表集合中的文档进行动态相关度计算,所述相关度动态计算是指在对职位数据的检索结果进行评分时,采用包含字段评分和首发时间的动态因素的评分策略,对检索结果进行即时的相关度计算,评分策略包括字段评分和首发时间评分,所述字段评分是根据关键字检索结果所在的字段赋予不同的分数,所述字段包括:职位名、公司名、职位描述,职位名分数高于公司名分数,公司名分数高于职位描述分数,采用0~255的256个整数值作为字段评分的评分区间;所述首发时间评分是根据职位的首次发布时间赋予不同的分数,计算职位首发时间与当前时间的时间差,距离当前时间越近,即时间差越小,分数越高,采用0~255的256个整数值作为职位首发时间的评分区间,通过分数列表排序可快速实现职位首发时间动态评分的排序,
e、通过分数列表排序过程模块(28)快速实现相关度评分的排序,生成结果集合,所述分数列表排序是指在对职位进行评分时,将职位按照其字段评分和首发时间评分归并到对应的评分区间0~65535的65536个整数值,生成评分区间内任一分数值对应的所有职位集合,由于职位数据库中的职位数据按照发布时间进行降序排列,并以降序读取,因此任一分数值对应的所有职位集合内部都是有序的,即该分数值对应的职位集合内部按发布时间降序排列,距离当前时间越近顺序越靠前,根据分数列表的性质,只需要按照分数从高到低、在同一分数内部从前到后取出一定数量的结果即可,从而通过分数列表提高排序速度;
f、根据查询字符串中所需的返回结果数量,通过结果返回过程模块(29)将相应的结果集合以及结果的统计信息返回给Web客户端。
8.根据权利要求6所述的从职位数据库中快速筛选职位的方法,其特征在于,所述更新线程模块(22)监听索引文件的更新请求,若更新请求判断模块(30)的判断结果为“是”,则进行更新并继续监听,若更新请求判断模块(30)的判断结果为“否”,则继续监听;进行更新时,首先通过删除无效索引过程模块(31)删除无效索引,然后通过增量更新索引过程模块(32)对索引块进行增量更新,最后通过清理无效数据过程模块(33)清理现有块中的无效数据;当更新线程模块(22)进行索引更新时,该服务器停止检索服务,在此期间的查询请求将转发到备份服务器进行检索,完成职位检索服务器工作过程。
CN201610174810.8A 2016-03-25 2016-03-25 一种从职位数据库中快速筛选职位的方法 Active CN105843918B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610174810.8A CN105843918B (zh) 2016-03-25 2016-03-25 一种从职位数据库中快速筛选职位的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610174810.8A CN105843918B (zh) 2016-03-25 2016-03-25 一种从职位数据库中快速筛选职位的方法

Publications (2)

Publication Number Publication Date
CN105843918A true CN105843918A (zh) 2016-08-10
CN105843918B CN105843918B (zh) 2020-04-07

Family

ID=56583350

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610174810.8A Active CN105843918B (zh) 2016-03-25 2016-03-25 一种从职位数据库中快速筛选职位的方法

Country Status (1)

Country Link
CN (1) CN105843918B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709851A (zh) * 2016-11-30 2017-05-24 中体彩科技发展有限公司 大数据检索方法及装置
CN107291930A (zh) * 2017-06-29 2017-10-24 环球智达科技(北京)有限公司 权重数的计算方法
CN107291858A (zh) * 2017-06-09 2017-10-24 成都索贝数码科技股份有限公司 一种基于字符串后缀的数据索引方法
CN108255887A (zh) * 2016-12-29 2018-07-06 北京国双科技有限公司 校验行业文本的方法和装置
CN108415748A (zh) * 2018-03-01 2018-08-17 广州南方人才资讯科技有限公司 信息显示方法和系统、计算机存储介质及设备
CN108960754A (zh) * 2017-05-20 2018-12-07 镇江杜微人才咨询有限公司 一种招聘系统
CN109063199A (zh) * 2018-09-11 2018-12-21 广州神马移动信息科技有限公司 资源过滤方法及其装置、电子设备、计算机可读介质
CN109344301A (zh) * 2018-09-26 2019-02-15 长沙学院 构造投票标识表的方法、计算机数据处理系统、信息管理系统
CN110377681A (zh) * 2019-07-11 2019-10-25 拉扎斯网络科技(上海)有限公司 一种数据查询的方法、装置、可读存储介质和电子设备
CN111597410A (zh) * 2020-05-11 2020-08-28 丁娜 一种基于大数据资源有效检索的评价反馈系统设计

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001057B1 (en) * 2008-01-09 2011-08-16 Hill Paul D Quantitative employment search and analysis system and method
CN102231168A (zh) * 2011-07-29 2011-11-02 前锦网络信息技术(上海)有限公司 一种从简历库中快速检索简历的方法
CN104834668A (zh) * 2015-03-13 2015-08-12 浙江奇道网络科技有限公司 基于知识库的职位推荐系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001057B1 (en) * 2008-01-09 2011-08-16 Hill Paul D Quantitative employment search and analysis system and method
CN102231168A (zh) * 2011-07-29 2011-11-02 前锦网络信息技术(上海)有限公司 一种从简历库中快速检索简历的方法
CN104834668A (zh) * 2015-03-13 2015-08-12 浙江奇道网络科技有限公司 基于知识库的职位推荐系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
赵恒: "基于BWT和小波树的数据压缩算法", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106709851A (zh) * 2016-11-30 2017-05-24 中体彩科技发展有限公司 大数据检索方法及装置
CN108255887B (zh) * 2016-12-29 2020-07-31 北京国双科技有限公司 校验行业文本的方法和装置
CN108255887A (zh) * 2016-12-29 2018-07-06 北京国双科技有限公司 校验行业文本的方法和装置
CN108960754A (zh) * 2017-05-20 2018-12-07 镇江杜微人才咨询有限公司 一种招聘系统
CN107291858A (zh) * 2017-06-09 2017-10-24 成都索贝数码科技股份有限公司 一种基于字符串后缀的数据索引方法
CN107291858B (zh) * 2017-06-09 2021-06-08 成都索贝数码科技股份有限公司 一种基于字符串后缀的数据索引方法
CN107291930A (zh) * 2017-06-29 2017-10-24 环球智达科技(北京)有限公司 权重数的计算方法
CN108415748A (zh) * 2018-03-01 2018-08-17 广州南方人才资讯科技有限公司 信息显示方法和系统、计算机存储介质及设备
CN109063199A (zh) * 2018-09-11 2018-12-21 广州神马移动信息科技有限公司 资源过滤方法及其装置、电子设备、计算机可读介质
CN109063199B (zh) * 2018-09-11 2022-10-25 优视科技有限公司 资源过滤方法及其装置、电子设备、计算机可读介质
CN109344301A (zh) * 2018-09-26 2019-02-15 长沙学院 构造投票标识表的方法、计算机数据处理系统、信息管理系统
CN110377681A (zh) * 2019-07-11 2019-10-25 拉扎斯网络科技(上海)有限公司 一种数据查询的方法、装置、可读存储介质和电子设备
CN111597410A (zh) * 2020-05-11 2020-08-28 丁娜 一种基于大数据资源有效检索的评价反馈系统设计

Also Published As

Publication number Publication date
CN105843918B (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
CN105843918A (zh) 一种从职位数据库中快速筛选职位的方法
US9798772B2 (en) Using persistent data samples and query-time statistics for query optimization
Halpin et al. The complex dynamics of collaborative tagging
CN102270232B (zh) 一种存储优化的语义数据查询系统
CN102722531B (zh) 一种云环境中基于分片位图索引的查询方法
CN111506621B (zh) 一种数据统计方法及装置
CN102306176B (zh) 一种基于数据仓库内在特征的olap关键词查询方法
CN110275920A (zh) 数据查询方法、装置、电子设备及计算机可读存储介质
CN103646032A (zh) 一种基于本体和受限自然语言处理的数据库查询方法
CN106066895A (zh) 一种智能查询系统
CN104391908B (zh) 一种图上基于局部敏感哈希的多关键字索引方法
CN106484815B (zh) 一种基于海量数据类sql检索场景的自动识别优化方法
Taelman et al. Triple storage for random-access versioned querying of RDF archives
CN102999637A (zh) 根据文件特征码为文件自动添加文件标签的方法及系统
CN102622358A (zh) 一种搜索信息的方法和系统
Li et al. Aggregate nearest keyword search in spatial databases
KR20180077830A (ko) 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치
CN102955860B (zh) 基于模式图的关键字查询改进方法
Kvalheim The Little Mongo DB Schema Design Book
Leeka et al. RQ-RDF-3X: going beyond triplestores
KR100612376B1 (ko) 통합패스의 노드범위를 이용한 엑스엠엘 인덱스 시스템 및방법
CN103699574B (zh) 一种对复杂检索式进行检索优化的方法及系统
CN112148830A (zh) 一种基于最大区域网格的语义数据存储与检索的方法及装置
CN110851439A (zh) 一种基于b树和森林的邀请码推广层级查询系统
Zeng et al. Efficient xml keyword search: from graph model to tree model

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant