一种通讯录信息搜索方法、装置、设备及存储介质与流程

文档序号:32654910发布日期:2022-12-23 21:12阅读:136来源:国知局
一种通讯录信息搜索方法、装置、设备及存储介质与流程

1.本发明涉及信息搜索技术领域,尤其涉及一种通讯录信息搜索方法、装置、设备及存储介质。


背景技术:

2.对于大型的企业邮箱系统而言,在不同的使用场景中常常需要对近百万级的通讯录数据进行处理,其中的一个使用场景,如在企业邮箱系统中,为了满足写信页面输入收件人时,快速的对某个通讯录用户的通信录信息进行查询。该查询实现中发件人可以在收件人栏、抄送人栏中输入待收信用户的某个属性信息,如名字、电话等,通过搜索可以快速呈现出该待收信用户的全部通讯录信息,发件人确认后将查询到的用户邮箱地址填入收件人栏、发件人栏中。
3.现有对通讯录用户的通讯录信息搜索实现中,主要是对关系型数据库进行的搜索,需要对数据库字段进行模糊查询来实现,这种直接访问数据库进行信息查询往往需要进行通讯录数据表的全表遍历查询。当通讯录用户数量爆发式增长时,信息查询的实现给数据库带来很大压力,同时查询效率随着用户数量的增加成线性降低,影响了通讯录用户信息的查询效果。


技术实现要素:

4.本发明提供了一种通讯录信息搜索方法、装置、设备及存储介质,可以有效降低数据库服务器的运行压力,提升通讯录信息搜索的效率。
5.根据本发明的一方面,提供了一种通讯录信息搜索方法,包括:
6.接收相对待查通讯用户输入的待搜字符串;
7.从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树,其中,各内存索引树包括通讯录中各属性字段对应的分词信息;
8.按照设定匹配原则遍历当前内存索引树,确定与待搜索字符串匹配的目标分词信息;
9.根据各所述目标分词信息在内存索引树中的节点及其所有叶子节点中的通讯录信息的内存地址,获取并构成所述待查通讯用户的通讯录信息。
10.根据本发明的另一方面,提供了一种通讯录信息搜索装置,包括:
11.字符串接收模块,用于接收相对待查通讯用户输入的待搜字符串;
12.第一确定模块,用于从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树,其中,各内存索引树包括通讯录中各属性字段对应的分词信息;
13.第二确定模块,用于按照设定匹配原则遍历当前内存索引树,确定与待搜索字符串匹配的目标分词信息;
14.信息构成模块,用于根据各目标分词信息在内存索引树中的节点及其所有子节点的通讯录信息内存地址,构成待查询通讯用户的通讯录信息。
15.根据本发明的另一方面,提供了一种电子设备,电子设备包括:
16.至少一个处理器;以及
17.与至少一个处理器通信连接的存储器;其中,
18.存储器存储有可被至少一个处理器执行的计算机程序,计算机程序被至少一个处理器执行,以使至少一个处理器能够执行本发明任一实施例的通讯录信息搜索方法。
19.根据本发明的另一方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令用于使处理器执行时实现本发明任一实施例的通讯录信息搜索方法。
20.本发明实施例的技术方案,通过接收相对待查通讯用户输入的待搜字符串,从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树,按照设定匹配原则遍历当前内存索引树,确定与待搜索字符串匹配的目标分词信息,根据各目标分词信息构成待查通讯用户的通讯录信息。上述技术方案,在通讯录信息搜索中,可以直接在内存中构建内存索引树,通讯录数据保存内存索引树中,并根据分词信息确定通讯录信息搜索结果。本技术方案在实现通讯录信息搜索时无需在数据库中进行复杂的数据表搜索,可以直接在内存中以索引树的形式进行信息匹配。有效的提升了通讯录信息的搜索效率,相对增大了同时信息搜索的搜索容量,减轻了数据库服务器的运行压力。
21.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
22.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是根据本发明实施例一提供的一种通讯录信息搜索方法的流程图;
24.图2是根据本发明实施例二提供的一种通讯录信息搜索装置的结构示意图;
25.图3是实现本发明实施例三的通讯录信息搜索方法的电子设备的结构示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
27.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“目标”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备
不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
28.实施例一
29.图1为本发明实施例一提供了一种通讯录信息搜索方法的流程图,本实施例可适用于邮箱中不同搜索量下通讯录信息的搜索,该方法可以由通讯录信息搜索装置来执行,该通讯录信息搜索装置可以采用硬件和/或软件的形式实现。如图1所示,该方法包括:
30.s101、接收相对待查通讯用户输入的待搜字符串。
31.所述待查通讯用户可以是任何产生通讯录信息搜索需求的客户端,所述通讯录信息可以包括姓名、地址、企业、部门等基本信息。所述待搜字符串可以是所述待查通讯用户的基本组成信息,可以是由数字、字母、下划线组成的一串字符,在存储中,它的每一位单个元素能够被提取。
32.示例性的,服务器接收客户端发送的相对待查通讯用户输入的搜索信息,所述搜索信息可以包括所述待搜字符串。
33.s102、从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树。
34.所述预先基于全量通讯录数据构建的两个内存索引树,所述内存索引树可以是多叉树或二叉树,所述多叉树包括根节点、子节点和叶子节点,一个根节点可以有多个子节点,是树最顶端的节点;子节点遵循一个根节点定律,并且下面还连接有叶子节点;所述叶子结点(又称为终端结点)下面不再连接有节点。将通讯录数据信息保存到所述内存索引树中,并将所述内存索引树同步到所有节点服务器中。
35.所述构建内存索引树可以包括数据查询、拼音转换、分词处理、索引树构建和索引树切换等阶段。
36.示例性的,基于全量通讯录数据,构建两个内存索引树,所述两个内存索引树可以根据服务端需求由管理员自行命名。根据通讯录信息更新时间确定当前内存索引树。
37.s103、按照设定匹配原则遍历所述当前内存索引树,确定与所述待搜索字符串匹配的目标分词信息。
38.所述设定匹配原则可以是最左匹配原则,也可以是其他匹配原则。所述最左匹配原则是在联合索引中,以最左为优先,即以最左边的节点为起点,任何连续的索引都能够匹配。所述遍历,可以是按所述设定匹配原则的搜索路线,依次对索引树中每个节点均做一次访问,检查节点的值、更新节点的值等。
39.所述目标分词信息,可以是通讯录数据信息基于分词算法获取的分词结果信息,在做文本处理的时候,首先要做的预处理就是分词。所述分词算法,可以是中文分词算法和英文分词算法,根据输入词的信息划分词的边界,是一种使计算机能够理解和划分运行输入词语信息的处理过程。在本实施例中,所述目标分词信息可以是通讯录内存索引树中与所述待搜索字符串所匹配的分词信息,即邮箱通讯录中待搜索的姓名、地址、企业、部门等任意一个或多个基本信息中的分词信息。需要注意的是,所述分词信息以内存索引树的形式进行保存,分词信息的最后一个字符所在节点存储了通讯录信息的内存地址。
40.示例性的,从根节点开始,根据所述最左匹配原则的执行逻辑,向同方向上的下一子节点开始遍历,遍历所述内存索引树中的每个节点,直到匹配到与所述待搜索字符串相
符的分词信息,将该分词信息确定为所述目标分词信息,极大的提升了通讯录数据搜索效率。
41.s104、根据各所述目标分词信息在内存索引树中的节点及其所有叶子节点中的通讯录信息的内存地址,获取并构成所述待查通讯用户的通讯录信息。
42.所述目标分词信息即与所述待搜索信息相匹配的信息,可以包括姓名、地址、企业、部门等基本信息。所述内存索引树中的节点及其所有叶子节点中的通讯录信息的内存地址,可以匹配到与之对应的通讯录信息。具体的,在待搜字符串匹配内存索引树时,当匹配到一个节点后,其对应的所有子节点也同样匹配上。因此所述待搜字符串也匹配了所有子节点的通讯录内存地址数组。在内存索引树中,每个分词的最后一个节点,都存储了通讯录的内存地址数组,该数组可以直接指向对应的多个通讯录信息。
43.示例性的,用户根据分词信息搜索时,例如目标搜索信息为“abb”,在输入“a”后,可能匹配到的信息包括“abb”、“abc”或“acd”等通讯录信息,用户可以根据已有的通讯录信息确定待查通讯用户的通讯录信息,也可以继续输入目标搜索信息的分词信息,输入“ab”后,可能匹配到的信息包括“abb”、“abc”或“abd”等,同理,用户可以选择是否继续输入分词信息,直至从存储了通讯录内存地址数组直接指向对应的多个通讯录信息中确定待查通讯用户的通讯录信息,并返回匹配结果。
44.在本实施例中,通过接收相对待查通讯用户输入的待搜字符串,从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树,按照设定匹配原则遍历当前内存索引树,确定与待搜索字符串匹配的目标分词信息,根据目标分词信息的所在节点及其所有子节点的通讯录信息构成待查通讯用户的通讯录信息。上述技术方案,在通讯录信息搜索中,可以直接在内存中全量构建内存索引树,将通讯录数据保存内存索引树中,并根据分词信息确定通讯录信息搜索结果。本技术方案在实现通讯录信息搜索时无需在数据库中进行复杂的数据表搜索,可以直接在内存中以索引树的形式进行信息匹配。有效的提升了通讯录信息的搜索效率,相对增大了并行信息搜索的搜索容量,减轻了数据库服务器的运行压力。
45.作为本实施例的第一可选实施例,本第一可选实施例可以将从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树具体化为下述步骤:
46.a1)获取预先基于全量通讯录数据构建的两个内存索引树。
47.基于全量通讯录数据,在内存中构建两个内存索引树,所述内存索引树各个节点中都可以保存有通讯录数据信息。
48.b1)确定各所述内存索引树所对应更新时间戳与当前时间点的间隔时长。
49.所述更新时间戳可以是使用数字签名技术产生的数据,能表示通讯录数据信息在某个特定时间之前已经存在的、完整的且可验证的数据,通常可以是一个字符序列,唯一地标识某一刻的时间。在本实施例中,所述更新时间戳主要用于数据信息更新中,确定各内存索引树的上一次内存更新时间戳,并确定当前时间点与所述各个内存索引树更新时间戳之间的间隔时间。
50.示例性的,在本实施例中,两个内存索引树可以分别称为第一内存索引树和第二内存索引树,例如第一内存索引树对应更新时间戳为12:00,第二内存索引树更新时间戳为12:05,当前时间为12:30,可以确定所述第一内存索引树所对应更新时间戳与当前时间点
的间隔时长为30分钟,所述第二内存索引树所对应更新时间戳与当前时间点的间隔时长为25分钟。
51.可选的,所述内存索引树更新可以是通过定时任务或者手动触发的方式进行调用执行。
52.c1)将最小间隔时长关联的内存索引树作为当前内存索引树。
53.所述最小间隔时长可以是将两个内存索引树所对应更新时间戳与当前时间点的间隔时长相比较,间隔时间段的内存索引树可以作为当前内存索引树,所述当前内存索引树可以称为主用索引树。
54.示例性的,基于全量通讯录数据,构建两个内存索引树,将所述通讯录数据信息存储到所述内存索引树中,并在全量通讯录数据同步更新中,将所述通讯录同步更新数据全量覆盖到当前某一内存索引树,并记录该内存索引树对应的更新时间戳,以及计算所述更新时间戳与当前时间点的间隔时长,将两个内存索引树分别确定的间隔时长进行比较,确定最小间隔时长,并将所述最小间隔时长关联的内存索引树作为当前内存索引树。例如,第一内存索引树所对应更新时间戳与当前时间点的间隔时长为30分钟,所述第二内存索引树所对应更新时间戳与当前时间点的间隔时长为25分钟,二者进行比较,确定第二内存索引树的间隔时长小于第一内存索引树的间隔时长,将所述第二内存索引树确定为当前内存索引树。
55.在本可选实施例中,通过获取预先基于全量通讯录数据构建的两个内存索引树,确定各所述内存索引树所对应更新时间戳与当前时间点的间隔时长,将最小间隔时长关联的内存索引树作为当前内存索引树。上述技术方案构建了两个可以存储通讯录数据信息的内存索引树,并确定了两个内存索引树中最近一个进行过通讯录数据更新的内存索引树,将其作为当前内存索引树,可以有效提升通讯录数据信息遍历搜索时信息的准确性,提升通讯录信息搜索装置的精度。
56.作为本实施例的第二可选实施例,在上述实施例基础上,本第二可选实施例还优化增加了:
57.a2)将除所述当前内存索引树外的另一内存索引树记为备用索引树,删除所述备用索引树中的分词信息,作为新的初始索引树;
58.所述两个内存索引树可以分别记录为主用索引树和备用索引树,所述当前内存索引树可以是主用索引树,另一内存索引树可以记为备用索引树,将所述备用索引树内的分词信息清空,作为一个空白的初始索引树,可以用于接收最新的通讯录数据信息。
59.b2)检测到当前满足索引树全量同步条件时,重新基于全量通讯录数据更新所述初始索引树,并记录更新后的更新时间戳。
60.所述重新基于全量通讯录数据更新所述初始索引树,初始索引树中原分词信息被删除后,可以用来接收最新的通讯录数据信息,并记录更新后的更新时间戳,此时,在两个内存索引树中,本初始内存索引树更新时间戳与当前时间点间隔时长最短。在满足索引树全量同步条件时,接收最新的通讯录数据信息后的所述初始索引树(原备用索引树),可以作为上述步骤中根据最近间隔时长所确定的当前内存索引树(主用索引树),实现主用索引树与备用索引树之间的切换,所述主用索引树和备用索引树名称可以根据需求获取。
61.可选的,所述主用索引树和备用索引树可以在数据更新缓存过程中相互切换,所
述主备索引树的切换通过缓存名称来实现。缓存过程中,两个内存索引树名称可以随着内存索引树的切换循环使用。需要注意的是,在本实施例中,通讯录信息搜索始终访问主用索引树。
62.进一步地,所述索引树全量同步条件包括:接收到生成的全量同步指令,且成功获取到全量同步锁以及同步锁;
63.所述全量同步指令的生成时机包括:接收到用户触发的全量同步请求;或者,达到预先设定的全量同步执行时间点。
64.所述全量同步指令可以是一种执行全量同步的命令,例如可以是一段命令程序,根据所述命令程序可以获取所述全量同步锁与所述同步锁。服务器基于所述全量同步指令,在上述初始索引树中同步更新最新的通讯录数据信息。
65.所述获取全量同步锁与同步锁,在获取一次后,若成功,更新所述内存索引树,若不成功,再次尝试几次获取,例如可以是三次,若三次获取全部获取失败,则全量同步失败,流程结束。所述全量同步锁与同步锁可以是后台程序中创建的一个工具,是根据synchronized(同步)关键字保证多个线程共同操作共享数据时,同一时刻只有一个线程在操作,其余线程将处于拦截状态,直到这个线程执行完毕,下个线程才会开始执行,避免出现资源抢占。所述全量同步锁和同步锁都可以通过分布式锁实现,所述分布式锁可以是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应用所使用。
66.所述全量同步锁,可以在全量阶段进行加锁,确定全量阶段的初始位点,保证全量过程中的数据一致性,避免多进程并发执行问题,从而支持高可用环境的多机部署。
67.所述同步锁,可以在完成数据全量同步后,在内存索引树逻辑中加锁,保证线程获取资源的稳定性,避免全量同步构建索引树和增量同步更新索引树并发执行,从而避免可能的索引数据错误,维护了线程的安全。
68.所述全量同步指令的生成时机中,接收到用户触发的全量同步请求,该指令生成时机可以是用户产生全量同步更新需求,进而手动触发全量同步更新指令,具备可控性;所述达到预先设定的全量同步执行时间点,可以是预先设置一个固定的时间点来生成全量同步指令,进行数据同步更新。所述固定的时间点的具体时间与更新频率,可以是任何时间与任何更新频率,本实施例在此不作限定。
69.示例性的,将备用索引树内容清空,作为初始索引树后,检测所述全量同步条件是否被触发,全量同步条件被触发,获取全量同步指令及全量同步锁与同步锁,所述全量同步指令被手动触发或定时启动后,基于全量通讯录数据更新所述初始索引树,并记录更新后的更新时间戳。
70.在本可选实施例中,将除所述当前内存索引树外的另一内存索引树记为备用索引树,删除所述备用索引树中的分词信息,作为新的初始索引树,接收到生成的全量同步指令,且获取全量同步锁以及同步锁,在接收到用户触发全量同步请求或达到预先设定的全量同步执行时间点时,重新基于全量通讯录数据更新所述初始索引树,并记录更新后的更新时间戳。上述技术方案,在全量构建内存索引树进程中获取了全量同步锁与同步锁,当多个对象操作共享数据时,保证同一时刻只有一个线程进行操作,避免多进程并发执行问题,以及全量同步构建索引树和增量同步更新索引树并发执行的问题;清空备用索引树,并将
全量通讯录数据更新至所述内存索引树中,采用主用索引树与备用索引树切换的方式,实现全量同步和信息搜索业务的分离,从而实现全量同步构建索引树时联想搜索功能的可用性,并通过全量同步索引方案的实施,在后期维护过程中具备重建和恢复索引树数据的能力。本技术方案,有效保证了通讯录数据更新的安全进行,提升了通讯录数据信息搜索的时效性与精确性。
71.作为本实施例的第三可选实施例,在上述实施例基础上,本第三可选实施例还优化增加了基于全量通讯录数据构建内存索引树的步骤,包括:
72.a3)获取当前存在的初始索引树,并访问存储通讯录数据的数据库,获得包含全量通讯录数据的通讯录数据表。
73.所述当前存在的初始索引树,可以是满足索引树全量同步条件时,基于全量通讯录数据更新,并记录更新后更新时间戳的初始索引树。
74.所述存储通讯录数据的数据库,可以是用来存储通讯录数据的仓库,本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加、修改、删除及查询等操作。所述数据库可以是mysql或达梦、人大金仓等国产化数据库。
75.所述通讯录数据表,在关系型数据库中,数据表可以是一系列二维数组的集合,用来代表和储存数据对象之间的关系,由纵向的列和横向的行组成,在所述存储通讯录数据的数据库中,以表为组织单位存储通讯录数据。
76.示例性的,获取当前内存中存在的初始索引树,此时所述初始索引树已经切换为主用索引树,并访问存储通讯录数据的数据库,获得所述通讯录数据库中包含全量通讯录数据的通讯录数据表,所述通讯录数据包括待搜索信息。
77.b3)根据所述通讯录数据表中的中文名字段构建拼音字段,形成新的属性字段。
78.所述根据所述通讯录数据表中的中文名字段构建拼音字段,可以是将通讯录中的中文名字段转换为拼音,构建新的拼音字段。所述将通讯录中的中文名字段转换为拼音,可以通过拼音词典实现。
79.所述属性字段,可以是给字段做一个标识,表明该字段可能有某些特殊用法,在本实施例中,所述属性字段可以是通讯录信息中的姓名、地址、企业、部门等基本信息构成的字段。
80.示例性的,将所述通讯录数据表中的中文名字段构建新的拼音字段,增加根据拼音字段形成的属性信息字段,使所述内存索引树具备拼音联想查询的能力。
81.c3)对所述通讯录数据表中各属性字段的字段通讯数据进行分词处理。
82.所述分词处理可以是基于分词算法对各属性字段的字段通讯数据进行的处理,所述分词算法,可以通过拼音分词、中文姓名词典、英文姓名词典等实现。
83.示例性的,按照通讯录各字段的类型,使用对应的分词算法,比如拼音字段,则按照每个字的拼音进行分词处理,中文姓名则按照中文姓名词典进行分词处理,英文姓名按照英文姓名词典进行分词处理。
84.d3)按照多叉树结构的存储策略将处理后获得的各分词数据存储到所述初始索引树中,构成所述通讯录数据表的内存索引树。
85.所述多叉树结构的存储策略可以包括顺序存储或三叉链表存储。将通讯录数据的多字段分别按节点插入并存储进所述内存索引树,完成所述内存索引树数据的全量创建,
从而具备对通讯录多字段的信息搜索能力。
86.可选的,在完成所述同步更新后,释放所述全量同步锁与同步锁。
87.进一步的,所述对所述通讯录数据表中各属性字段的字段通讯数据进行分词处理,包括:
88.c31)获取所述通讯录数据表中各属性字段的属性类型。
89.所述属性字段可以包括通讯录信息中的姓名、地址、企业、部门等基本信息构成的字段,根据所述属性字段构建与之相匹配的所述属性类型。
90.c32)根据各所述属性类型,确定相应的分词策略。
91.所述属性类型中,可以有拼音类型,中文姓名类型以及英文姓名类型等,根据所述属性类型,确定与之相对应的分词策略。例如拼音类型可以通过拼音分词来实现,中文姓名类型可以通过中文姓名词典来实现,英文姓名类型可以通过英文姓名词典等不同的分词策略来实现。
92.c33)基于各所述分词策略,分别对相应属性字段的字段通讯数据进行分词处理。
93.所述分词处理,可以按照通讯录各字段的类型,使用对应的分词算法,例如拼音字段,按照每个字的拼音进行分词处理,中文姓名则按照中文姓名词典进行分词处理,英文姓名按照英文姓名词典进行分词处理。
94.在本可选实施例中,通过获取当前存在的初始索引树,并访问存储通讯录数据的数据库,获得包含全量通讯录数据的通讯录数据表,根据通讯录数据表中的中文名字段构建拼音字段,形成新的属性字段,对通讯录数据表中各属性字段的字段通讯数据进行分词处理,按照多叉树结构的存储策略将处理后获得的各分词数据存储到初始索引树中,构成通讯录数据表的内存索引树。上述技术方案,基于现有系统的已有的数据库中的数据表,获取通讯录数据,将数据库中的通讯录数据多字段转换为内存中的索引树。在构建索引树过程中,通过中文拼音转换增加拼音搜索能力,通过分词算法提供数据信息查询能力并提升查询效率。
95.作为本实施例的第四可选实施例,在上述实施例基础上,本第四可选实施例还优化增加了基于增量通讯录数据构建内存索引树的步骤,包括:
96.检测到当前满足索引树增量同步条件时,对所述当前内存索引树进行增量同步更新,并记录更新后的更新时间戳;
97.其中,所述索引树增量同步条件包括:检测到数据库内通讯录数据表中存在数据修改,且成功获取到增量同步锁以及同步锁。
98.增量同步可以是指,在一次全量同步备份或上一次增量同步备份后,每次的备份只需备份与前一次相比增加或者被修改的部分。每发起一次修改,就产生一次增量同步。
99.所述当前内存索引树可以是主用索引树,所述增量同步更新可以是对主用索引树进行的同步更新,所述更新时间戳可以是所述当前索引树更新后记录的完成增量同步更新的时间点。
100.所述通讯录数据表中存在数据修改,数据修改可以是由服务器端管理员在最初存储数据的数据表中执行的数据修改,例如可以是增加、删除或替换某些数据信息。
101.所述增量同步锁,可以是在增量阶段进行加锁,保证增量过程中的数据一致性,避免多进程并发执行问题,从而支持高可用环境的多机部署。
102.所述同步锁,可以是在完成数据增量同步后,在当前内存索引树逻辑中加锁,保证线程获取资源的稳定性,避免全量同步构建索引树和增量同步更新索引树并发执行,从而避免可能的索引数据错误,维护了线程的安全。
103.所述增量同步锁与所述同步锁,与上述全量同步锁与同步锁相同,可以通过分布式锁实现。
104.示例性的,检测到数据库内通讯录数据表中存在管理员对初始通讯录数据信息的修改,并获取到根据分布式锁实现的增量同步线程的所述增量同步锁以及构建索引树总线程的同步锁,进而对所述当前内存索引树进行增量同步更新,并记录更新后的更新时间戳。使其具有基于当前内存索引树数据信息,实时地将通讯录数据的变更同步到主用索引树的能力。
105.可选的,在对所述当前内存索引树进行增量同步更新之前,还包括:
106.将通讯录修改数据转换为一条消息对象添加至预设的消息队列中,其中,所述通讯录修改数据为从所述通讯录数据表中检测到的进行了修改的数据。
107.示例性的,当前内存索引树更新中,每产生一次通讯录信息修改,都会进行一次增量同步更新,在增量同步更新至当前内存索引树前,产生两个消息队列,其中一个消息队列被记为处理队列,将通讯录信息修改后的数据转换为一条消息对象,添加至所述预设的消息队列中。
108.进一步的,所述对所述当前内存索引树进行增量同步更新,并记录更新后的更新时间戳,包括:
109.a4)查找预构建的消息队列,如果存在增量同步更新失败的历史消息数据,则还原到处理队列中。
110.所述增量同步更新当前内存索引树使用双队列机制,增加定义了一个预构建的消息队列,所述预构建的消息队列可以是一个等待队列或处理队列,原消息队列可以是一个执行任务的队列,所述两个消息队列,通过缓存中间件实现。
111.示例性的,在增量同步数据更新中,预消费一条数据消息时,会将所述数据消息插入至预构建的消息队列中。如果本次增量同步失败,则会将所述预构建的消息队列中的消息数据,即所述增量同步更新失败的历史消息数据退回至原消息队列中,从而增加消费的容错机制。
112.b4)获取所述消息队列中的消息对象,并将所述消息对象的消息数据插入到所述处理队列。
113.所述消息对象,可以是指在原消息队列中的最新的对象数据信息,可以包括通讯录信息中的姓名信息等能够识别对应用户的基本信息。
114.所述将消息对象的消息数据插入到所述处理队列,可以是将管理员修改后的通讯录信息输入至所述消息处理队列中。
115.示例性的,管理员增加了另一通讯用户信息,在本增量同步更新过程中,获取所述增加的通讯用户信息以及其消息对象,将上述获取到信息的消息数据从原消息队列中插入至预构建的消息队列中,即处理队列。
116.c4)将所述处理队列中包括的各消息数据转换为相应的通讯录数据,获得增量通讯录数据。
117.所述处理队列中包括的各消息数据可以是各修改信息,例如可以是修改的用户姓名或电话等,将其转换为通讯录数据。
118.d4)按照设定分词处理策略对各所述增量通讯录数据进行分词处理,获得相应的增量分词信息;
119.所述设定分词处理策略可以是指对不同属性类型通讯录信息采用不同的分词算法,根据通讯录数据各字段的类型,使用对应的分词算法,例如拼音字段,按照每个字的拼音进行分词处理,中文姓名则按照中文姓名词典进行分词处理,英文姓名按照英文姓名词典进行分词处理。获得各个增量通讯录数据对应的增量分词信息。
120.e4)将各所述增量分词信息同步更新到所述当前内存索引树中,并记录更新后的更新时间戳。
121.所述增量分词信息可以是基于上述分词处理的增量通讯录数据,即通讯录修改后数据的分词信息,所述增量分词信息同步更新并存储到当前内存索引树后,本次增量同步更新成功,记录更新完成时的更新时间戳。
122.可选的,在完成所述同步更新后,释放所述增量同步锁与同步锁。
123.进一步的,所述对所述当前内存索引树进行增量同步更新,并记录更新后的更新时间戳,还包括:
124.将增量同步更新中更新失败的失败消息数据转移至所述消息队列中;
125.将增量同步更新中更新成功的消息数据从所述处理队列中删除。
126.所述增量同步更新失败,则将消息预消费插入至所述处理队列中的数据信息退回至原消息队列中,可选的,增量同步更新失败后,消息数据退回原消息队列后,可以尝试重新执行上述消息预消费步骤,增加消费的容错机制,也可以更精准的确定所述增量同步更新失败的具体步骤位置。
127.所述增量同步更新成功,则将更新成功的消息数据从所述处理队列中删除,此时,由于原消息队列中的消息数据已插入至所述处理队列,两个消息队列都被清空。完成所述增量同步更新,准备执行下一个通讯录修改时的队列循环。
128.在本可选实施例中,检测到当前满足索引树增量同步条件时,对所述当前内存索引树进行增量同步更新,并记录更新后的更新时间戳。上述技术方案,将数据库中的通讯录数据修改,同步更新到内存的索引树中,让通讯录信息得到实时更新,采用双队列执行机制,解决了在增量同步更新过程中一旦出现问题很难定位的缺陷,使用消息队列异步消费增量同步消息,从而降低对原业务的性能损耗。本技术方案可以提升通讯录信息更新的时效性,并保障了通讯录信息更新的成功率,提高了通讯录信息搜索到效率。
129.实施例二
130.图2为本发明实施例三提供的一种通讯录信息搜索装置的结构示意图。
131.如图2所示,该装置包括:
132.字符串接收模块201,用于接收相对待查通讯用户输入的待搜字符串;
133.第一确定模块202,用于从预先基于全量通讯录数据构建的两个内存索引树中确定当前内存索引树,其中,各所述内存索引树包括通讯录中各属性字段对应的分词信息;
134.第二确定模块203,用于按照设定匹配原则遍历所述当前内存索引树,确定与所述待搜索字符串匹配的目标分词信息;
135.信息构成模块204,用于根据各所述目标分词信息在内存索引树中的节点及其所有叶子节点中的通讯录信息的内存地址,获取并构成所述待查通讯用户的通讯录信息。
136.在本实施例中,通讯录信息搜索过程可以直接在内存中构建内存索引树,通讯录数据保存内存索引树中,并根据分词信息确定通讯录信息搜索结果。本技术方案在实现通讯录信息搜索时无需在数据库中进行复杂的数据表搜索,可以直接在内存中以索引树的形式进行信息匹配。有效的简化了通讯录信息搜索流程,提升了搜索效率,减轻了数据库服务器的运行压力。
137.可选的,第一确定模块202包括:
138.索引树获取单元,用于获取预先基于全量通讯录数据构建的两个内存索引树;
139.第一确定单元,用于确定各所述内存索引树所对应更新时间戳与当前时间点的间隔时长;
140.第二确定单元,用于将最小间隔时长关联的内存索引树作为当前内存索引树。
141.可选的,所述通讯录信息搜索装置还包括:
142.索引树标记模块,用于将除所述当前内存索引树外的另一内存索引树记为备用索引树,删除所述备用索引树中的分词信息,作为新的初始索引树;
143.索引树更新模块,用于检测到当前满足索引树全量同步条件时,重新基于全量通讯录数据更新所述初始索引树,并记录更新后的更新时间戳。
144.可选的,所述索引树全量同步条件包括:接收到生成的全量同步指令,且成功获取到全量同步锁以及同步锁;
145.所述全量同步指令的生成时机包括:接收到用户触发的全量同步请求;或者,达到预先设定的全量同步执行时间点。
146.可选的,基于全量通讯录数据构建内存索引树,所述通讯录信息搜索装置还包括:
147.数据表获取模块,用于获取当前存在的初始索引树,并访问存储通讯录数据的数据库,获得包含全量通讯录数据的通讯录数据表;
148.属性字段形成模块,用于根据所述通讯录数据表中的中文名字段构建拼音字段,形成新的属性字段;
149.字段数据处理模块,用于对所述通讯录数据表中各属性字段的字段通讯数据进行分词处理;
150.索引树构建模块,用于按照多叉树结构的存储策略将处理后获得的各分词数据存储到所述初始索引树中,构成所述通讯录数据表的内存索引树。
151.可选的,所述对所述通讯录数据表中各属性字段的字段通讯数据进行分词处理,包括:
152.获取所述通讯录数据表中各属性字段的属性类型;
153.根据各所述属性类型,确定相应的分词策略;
154.基于各所述分词策略,分别对相应属性字段的字段通讯数据进行分词处理。
155.可选的,所述通讯录信息搜索装置还包括:增量同步更新模块,用于检测到当前满足索引树增量同步条件时,对所述当前内存索引树进行增量同步更新,并记录更新后的更新时间戳。
156.其中,所述索引树增量同步条件包括:检测到数据库内通讯录数据表中存在数据
修改,且成功获取到增量同步锁以及同步锁。
157.可选的,所述增量同步更新模块,包括:
158.消息队列查找单元,用于查找预构建的消息队列,如果存在增量同步更新失败的历史消息数据,则还原到处理队列中;
159.消息对象处理单元,用于获取所述消息队列中的消息对象,并将所述消息对象的消息数据插入到所述处理队列;
160.第一获取单元,用于将所述处理队列中包括的各消息数据转换为相应的通讯录数据,获得增量通讯录数据;
161.第二获取单元,用于按照设定分词处理策略对各所述增量通讯录数据进行分词数据,获得相应的增量分词信息;
162.信息同步更新单元,用于将各所述增量分词信息同步更新到所述当前内存索引树中,并记录更新后的更新时间戳。
163.可选的,所述增量同步更新模块,还包括:
164.第一消息处理单元,用于将增量同步更新中更新失败的失败消息数据转移至所述消息队列中;
165.第二消息处理单元,用于将增量同步更新中更新成功的消息数据从所述处理队列中删除。
166.可选的,所述增量同步更新模块还包括:
167.信息对象添加单元,用于在对所述当前内存索引树进行增量同步更新之前,将通讯录修改数据转换为一条消息对象添加至预设的消息队列中,其中,所述通讯录修改数据为从所述通讯录数据表中检测到的进行了修改的数据。
168.本发明实施例所提供的通讯录信息搜索装置可执行本发明任意实施例所提供的通讯录信息搜索方法,具备执行方法相应的功能模块和有益效果。
169.实施例三
170.图3示出了可以用来实施本发明的实施例的电子设备30的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
171.如图3所示,电子设备30包括至少一个处理器31,以及与至少一个处理器31通信连接的存储器,如只读存储器(rom)32、随机访问存储器(ram)33等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器31可以根据存储在只读存储器(rom)32中的计算机程序或者从存储单元38加载到随机访问存储器(ram)33中的计算机程序,来执行各种适当的动作和处理。在ram 33中,还可存储电子设备30操作所需的各种程序和数据。处理器31、rom 32以及ram 33通过总线34彼此相连。输入/输出(i/o)接口35也连接至总线34。
172.电子设备30中的多个部件连接至i/o接口35,包括:输入单元36,例如键盘、鼠标等;输出单元37,例如各种类型的显示器、扬声器等;存储单元38,例如磁盘、光盘等;以及通信单元39,例如网卡、调制解调器、无线通信收发机等。通信单元39允许电子设备30通过诸
如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
173.处理器31可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器31的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器31执行上文所描述的各个方法和处理,例如通讯录信息搜索方法。
174.在一些实施例中,通讯录信息搜索方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元38。在一些实施例中,计算机程序的部分或者全部可以经由rom 32和/或通信单元39而被载入和/或安装到电子设备30上。当计算机程序加载到ram 33并由处理器31执行时,可以执行上文描述的通讯录信息搜索方法的一个或多个步骤。备选地,在其他实施例中,处理器31可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行通讯录信息搜索方法。
175.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
176.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
177.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
178.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
179.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
180.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的管理难度大,业务扩展性弱的缺陷。
181.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
182.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1