CN109522313B - 搜索服务器刷索引的方法、装置、设备及可读存储介质 - Google Patents
搜索服务器刷索引的方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN109522313B CN109522313B CN201811197177.XA CN201811197177A CN109522313B CN 109522313 B CN109522313 B CN 109522313B CN 201811197177 A CN201811197177 A CN 201811197177A CN 109522313 B CN109522313 B CN 109522313B
- Authority
- CN
- China
- Prior art keywords
- index
- array
- copy
- data
- characters
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种搜索服务器刷索引的方法、装置、设备及可读存储介质,其中该方法包括:获取记录有待刷入搜索服务器的索引数据的数据表,以及数据表对应的索引数组;获取索引数组的多个副本数组;通过多个副本数组分别抢占索引数组,并在多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占;在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器,能提升向搜索服务器中刷入索引数据的速度。
Description
技术领域
本发明涉及搜索引擎技术领域,尤其涉及一种搜索服务器刷索引的方法、装置、设备及可读存储介质。
背景技术
搜索是指根据用户提交的搜索词/条件搜集信息,以确定搜索结果,并将搜索结果展示给用户的一种信息处理方式;搜索主要依赖用户设备和搜索服务器之间的数据交互实现,用户设备将用户输入的搜索词/条件提交至搜索服务器,搜索服务器根据搜索词/条件确定搜索结果,并向用户设备展示搜索结果。
目前搜索服务器在根据用户需求进行搜索之前,需要通过专门刷索引数据的工具将索引数据刷到搜索服务器中,而在刷完一些索引数据之后,为了让程序清楚哪些索引数据已经刷入搜索服务器,哪些索引数据还没刷入搜索服务器,一般通过数据库的某个特定字段(如读取标识字段)来标识。这就需要在每次刷完索引数据后修改数据库的这个特定字段,而当多线程并行向搜索服务器中刷入索引数据时,为避免数据库内发生冲突,在任一线程修改数据库的特定字段时,需要锁死数据库,因此在多线程并行向搜索服务器刷入索引数据时,修改数据库中的特定字段会产生一定的耗时,造成向搜索服务器中刷入索引数据的速度慢,影响用户体验。
发明内容
本发明的主要目的在于提供一种搜索服务器刷索引的方法、装置、设备及可读存储介质,以解决向搜索服务器中刷入索引数据的速度慢,影响用户体验的问题。
为实现上述目的,本发明提供了一种搜索服务器刷索引的方法,包括:
获取记录有待刷入搜索服务器的索引数据的数据表,以及数据表对应的索引数组;其中,数据表中还记录有每个索引数据对应的数据标识,索引数组所包含的第一字符的数量与数据标识的数量相同,且索引数组中的第一字符与数据表中的数据标识一一对应;
获取索引数组的多个副本数组;其中,多个副本数组与用于将索引数据刷入搜索服务器的多个线程一一对应;
通过多个副本数组分别抢占索引数组,并在多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占;
在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器。
本发明还提供了一种搜索服务器刷索引的装置,包括:
第一获取模块,用于获取记录有待刷入搜索服务器的索引数据的数据表,以及数据表对应的索引数组;其中,数据表中还记录有每个索引数据对应的数据标识,索引数组所包含的第一字符的数量与数据标识的数量相同,且索引数组中的第一字符与数据表中的数据标识一一对应;
第二获取模块,用于获取索引数组的多个副本数组;其中,多个副本数组与用于将索引数据刷入搜索服务器的多个线程一一对应;
抢占模块,用于通过多个副本数组分别抢占索引数组,并在多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占;
数据处理模块,用于在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器。
本发明还提供了一种搜索服务器刷索引的设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述的搜索服务器刷索引的方法的步骤。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述的搜索服务器刷索引的方法的步骤。
本发明的上述方案至少包括以下有益效果:
在本发明的实施例中,在需要向搜索服务器中刷入索引数据时,通过获取记录有待刷入搜索服务器的索引数据的数据表,以及该数据表对应的索引数组,然后获取该索引数组的多个副本数组,接着将这多个副本数组一一对应的分配给用于向搜索服务器中刷入索引数据的多个线程,接着通过这多个副本数组分别抢占索引数组,并在这多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占,且其中在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器,以将数据表中待刷入搜索服务器的索引数据全部刷入搜索服务器。其中,由于多个线程在向搜索服务器中刷入索引数据时,各线程按照各自对应的副本数组向搜索服务器中刷入对应的索引数据,不需要在向搜索服务器中刷入索引数据的过程中反复执行锁死存放数据表的数据库的操作,因而能减少向搜索服务器中刷入索引数据的时间,提升向搜索服务器中刷入索引数据的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明具体实施例提供的一种搜索服务器刷索引的方法的流程图;
图2为本发明具体实施例中抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符的流程图;
图3为本发明具体实施例提供的一种搜索服务器刷索引的装置的结构示意图;
图4为本发明具体实施例提供的一种搜索服务器刷索引的设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明的具体实施例了一种搜索服务器刷索引的方法,包括:
步骤11,获取记录有待刷入搜索服务器的索引数据的数据表,以及数据表对应的索引数组。
其中,数据表中还记录有每个索引数据对应的数据标识,索引数组所包含的第一字符的数量与数据标识的数量相同,且索引数组中的第一字符与数据表中的数据标识一一对应。
其中,在本发明的具体实施例中,上述数据表中所有索引数据对应的数据标识可以为一自增、且连续的标识,以确保数据表中每条索引数据对应的数据标识都是唯一的。具体的,可通过在数据表中定义一个sequence字段实现。
步骤12,获取索引数组的多个副本数组,其中,多个副本数组与用于将索引数据刷入搜索服务器的多个线程一一对应。
其中,在本发明的具体实施例中,上述副本数组中的内容与索引数组中的内容完全相同。具体的,可通过对索引数组进行复制操作(具体可通过局部存储区(TLS,ThreadLocal Storage)复制的方式对索引数组进行复制操作),得到索引数组的多个副本数组,并将这多个副本数组一一对应地分配给多个线程,以使多个副本数组与多个线程一一对应,以便后续各个线程能基于各自对应的副本数组完成对应的索引数据的刷入。
步骤13,通过多个副本数组分别抢占索引数组,并在多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占。
其中,在本发明的具体实施例中,当多个副本数组中的某个副本数组抢占到索引数组时,该副本数组会从索引数组抢占预设个数的第一字符,以使该副本数组对应的线程后续基于该副本数组抢占到的第一字符向搜索服务器中刷入对应的索引数据。可以理解的是,上述预设个数可根据实际需要进行设定,具体可以设定为5000条,以加快向搜索服务器中刷入索引数据的速度。
步骤14,在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器。
其中,在本发明的具体实施例中,多个副本数组在抢占索引数组时,具体哪个副本数组抢占到索引数组,取决于线程执行的快慢。且当某个副本数组对应的线程将该副本数组抢占到的预设个第一字符对应的索引数据刷入搜索服务器后,若此时索引数组中的第一字符未被抢占完,该副本数组仍可抢占索引数组。需要说明的是,上述数据表存放于搜索服务器的数据库中,本发明具体实施例中提及的将索引数据(可理解为索引的数据结构)刷入搜索服务器是指将搜索服务器的数据库中的数据表里的索引数据复制到搜索服务器的内存中,以便后续在使用搜索服务器搜索数据时能使用这些索引数据。
值得一提的是,在本发明的具体实施例中,由于数据标识将数据表中的索引数据与索引数组中的第一字符一一对应,同时用于向搜索服务器中刷入索引数据的多个线程与该索引数组的多个副本数组一一对应,且各线程按照各自对应的副本数组从索引数组中抢占到的第一字符向搜索服务器中刷入对应的索引数据,不需要在向搜索服务器中刷入索引数据的过程中反复执行锁死存放数据表的数据库的操作,因而能减少向搜索服务器中刷入索引数据的时间,提高向搜索服务器中刷入索引数据的速度,提升用户体验。
需要说明的是,在本发明的具体实施例中,上述搜索服务器可以为任一种搜索引擎服务器,如solr服务器,其中,solr是一种企业级搜索应用服务器。
其中,如图2所示,在本发明的一些具体实施例中,上述步骤13中通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符的具体实现方式包括如下步骤:
步骤21,使用预设的数据库锁锁死索引数组,以使抢占到索引数组的副本数组获取索引数组的游标的值,并从索引数组中游标的值对应的第一字符开始抢占预设个数的第一字符。
其中,索引数组的游标的值在多个副本数组中任一副本数组抢占索引数组之前,被修改为索引数组中未被抢占的所有第一字符中的第一个第一字符在索引数组中的序号值。当然,在索引数组中的第一字符全被抢占后,该索引数组的游标的值被置零。
即,索引数组的游标的值是一个变量,其在任一副本数组抢占到索引数组前,需修改为索引数组中未被抢占的所有第一字符中的第一个第一字符在索引数组中的序号值,从而保证各副本数组能按序抢占索引数组中的第一字符,也从而确保后续能将数据表中的所有索引数据刷入搜索服务器。
举例来说,假设索引数组中的第一字符为二进制数,该索引数组具体为[1,1,1,1,1,1,1,1,1],其中,1表示该第一字符未被抢占(而当该第一字符被抢占后,该第一字符修改为0),索引数组的游标的值为1。此时当某个副本数组抢占到索引数组,并从索引数组中抢占3个(假设上述预设个数为3)第一字符后,索引数组修改为[0,0,0,1,1,1,1,1,1],而索引数组的游标的值便被修改为4,以便下个副本数组抢占到索引数组时,能从第4个第一字符开始抢占。
步骤22,在抢占到索引数组的副本数组从索引数组中抢占完预设个数的第一字符之后,解除数据库锁。
其中,在本发明的具体实施例中,当任一副本数组抢占到索引数组时,会使用预设的数据库锁锁死索引数组,以在抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符的过程中,防止其他线程抢占索引数组,保证索引数组同时间只被一个副本数组操作。而当任一抢占到索引数组的副本数组抢占完预设个数的第一字符后,会解除数据库锁,以便其他副本数组抢占索引数组,从而规避数据库锁冲突。作为一个优选的示例,上述数据库锁可以为同步(synchronized)锁,以便能快速锁死/释放索引数组,从而提升向搜索服务器中刷入索引数据的速度。
另外,在本发明的一些具体实施例中,上述副本数组所包含的第二字符的数量与索引数组所包含的第一字符的数量相同,且副本数组中的第二字符与索引数组中的第一字符一一对应。
相应的,在执行完上述步骤14,在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器之后,上述方法还包括如下修改该副本数组的步骤:分别针对该副本数组从索引数组中抢占到的每个第一字符,检测数据表中与该第一字符对应的索引数据是否被成功刷入搜索服务器,当数据表中与该第一字符对应的索引数据被成功刷入搜索服务器时,将该副本数组中与该第一字符对应的第二字符修改为用于表征该第一字符对应的索引数据被成功刷入搜索服务器中的标识符。
其中,检测数据表中与任一第一字符对应的索引数据是否被成功刷入搜索服务器的具体实现方式可以为:通过检测搜索服务器中的内存中是否存在该第一字符对应的索引数据,若存在,则该第一字符对应的索引数据被成功刷入搜索服务器中,若不存在,则该第一字符对应的索引数据未被成功刷入搜索服务器中。
可见,对于某个抢占到预设个数的第一字符的副本数组而言,当该副本数组对应的线程将这预设个数的第一字符中的任一第一字符对应的索引数据成功刷入搜索服务器后,需将该副本数组中与该第一字符对应的第二字符修改为用于表征该第一字符对应的索引数据被成功刷入搜索服务器中的标识符,当然若刷入失败,则无需对该副本数组中与该第一字符对应的第二字符进行修改,以便清楚哪些索引数据被成功刷入搜索服务器,哪些索引数据未被成功刷入搜索服务器。
其中,上述第一字符可以为二进制数、十进制数或者十六进制数等,相应的第二字符也可以为二进制数、十进制数或者十六进制数等。
具体的,当第一字符和第二字符均为二进制数时,上述第二字符可以为二进制数0和1中的一个,标识符可以为二进制数0和1中的另一个。以多个副本数组中的任一副本数组为例,假设索引数组为[1,1,1,1,1,1,1,1,1],则该副本数组最开始也为[1,1,1,1,1,1,1,1,1],且假设该副本数组抢占索引数组的第一个和第二个第一字符,此时索引数组变为[0,0,1,1,1,1,1,1,1],索引数组的游标值变为3,以表征索引数组的前两个第一字符已被抢占,且在该副本数组抢占到抢两个第一字符后,该副本数组对应的线程将数据表中与前两个第一字符对应的索引数据刷入搜索服务器,且当该线程成功将这两条索引数据刷入搜索服务器后,该副本数组变为[0,0,1,1,1,1,1,1,1],以表征这两条索引数据已被成功刷入搜索服务器。
当然,在本发明的具体实施例中,在索引数组的第一字符全被抢占、抢占到第一字符的副本数组对应的线程已执行将对应的索引数据刷入搜索服务器、且抢占到第一字符的副本数组也已进行完修改之后,上述方法还包括获取数据表中索引数据的刷入进度的步骤:按位对所有副本数组中的二进制数进行与运算,得到用于表征数据表中的索引数据的刷入进度的进度数组。其中,进度数组所包含的二进制数的数量与索引数组中第一字符的数量相同,进度数组中的二进制数与索引数组中的第一字符一一对应,且当进度数组中的二进制数为1时,表征该二进制数对应的索引数据未被成功刷入搜索服务器,当进度数组中的二进制数为0时,表征该二进制数对应的索引数据被成功刷入搜索服务器。
其中,在本发明的具体实施例中,用户通过查看上述进度数组便能清楚索引数据的刷入进度,清楚哪些索引数据被成功刷入搜索服务器,哪些索引数据未被成功刷入搜索服务器。当然还可具体通过进度条的方式显示被成功刷入搜索服务器的索引数据占数据表中所有索引数据的比例,使得用户能快速清楚成功刷入搜索服务器的索引数据的比例。
举例来说,假设索引数组为[1,1,1,1,1,1,1,1,1](其中,索引数组中的1表示该第一字符未被抢占,而当该第一字符被抢占后,该第一字符修改为0),索引数组的游标的值为1,预设个数为3个,副本数组和线程的数量均为3个,3个副本数组(即第一个副本数组、第二个副本数组和第三个副本数组)一开始均为[1,1,1,1,1,1,1,1,1],抢占到索引数组的顺序为第一个副本数组、第二个副本数组和第三个副本数组。当第一个副本数组抢占到前3个第一字符后,索引数组变为[0,0,0,1,1,1,1,1,1],索引数组的游标的值变为4,第一个副本数组对应的线程将数据表中与前3个第一字符对应索引数据刷入搜索服务器,且若前3个第一字符对应索引数据均被成功刷入搜索服务器,那第一个副本数组变为[0,0,0,1,1,1,1,1,1];类似的,第二个副本数组抢占到索引数组的中间3个第一字符后,索引数组变为[0,0,0,0,0,0,1,1,1],索引数组的游标的值变为7,第二个副本数组对应的线程将数据表中与中间3个第一字符对应索引数据刷入搜索服务器,且若中间3个第一字符对应索引数据均被成功刷入搜索服务器,那第二个副本数组变为[1,1,1,0,0,0,1,1,1];又类似的,第三个副本数组抢占到索引数组的最后3个第一字符后,索引数组变为[0,0,0,0,0,0,0,0,0],索引数组的游标的值置零,第三个副本数组对应的线程将数据表中与最后3个第一字符对应索引数据刷入搜索服务器,且若最后3个第一字符中前两个第一字符对应索引数据中均被成功刷入搜索服务器,最后一个第一字符对应的索引数据未被成功刷入搜索服务器,那第三个副本数组变为[1,1,1,1,1,1,0,0,1]。此时,按位对三个副本数组中的二进制数进行与运算,得到进度数组为[0,0,0,0,0,0,0,0,1],用户通过查看该进度数组,能快速清楚只有索引数组中最后一个第一字符对应的索引数据未被成功刷入搜索服务器,便于用户后续对未被成功刷入搜索服务器的索引数据进行分析,以将该索引数据成功刷入搜索服务器,以便后续在使用搜索服务器搜索数据时能使用该索引数据。
如图3所示,本发明的具体实施例提供了一种搜索服务器刷索引的装置,该搜索服务器刷索引的装置3包括:第一获取模块301、第二获取模块302、抢占模块303和数据处理模块304。
其中,第一获取模块301,用于获取记录有待刷入搜索服务器的索引数据的数据表,以及数据表对应的索引数组;其中,数据表中还记录有每个索引数据对应的数据标识,索引数组所包含的第一字符的数量与数据标识的数量相同,且索引数组中的第一字符与数据表中的数据标识一一对应;
第二获取模块302,用于获取索引数组的多个副本数组;其中,多个副本数组与用于将索引数据刷入搜索服务器的多个线程一一对应;
抢占模块303,用于通过多个副本数组分别抢占索引数组,并在多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占;
数据处理模块304,用于在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器。
需要说明的是,本发明具体实施例提供的搜索服务器刷索引的装置3为与上述搜索服务器刷索引的方法对应的装置,上述搜索服务器刷索引的方法的所有实施例均适用于该搜索服务器刷索引的装置3,且该搜索服务器刷索引的装置3的实施例中均有相应的模块对应上述搜索服务器刷索引的方法中的步骤,能达到相同或相似的有益效果,为避免过多重复,在此不对搜索服务器刷索引的装置3中的每一模块进行过多赘述。
如图4所示,本发明的具体实施例还提供了一种搜索服务器刷索引的设备,该搜索服务器刷索引的设备4包括存储器41、处理器42以及存储在存储器41中并可在处理器42上运行的计算机程序43,该处理器42执行计算机程序43时实现上述的搜索服务器刷索引的方法的步骤。
具体的,处理器42执行计算机程序43时实现如下步骤:获取记录有待刷入搜索服务器的索引数据的数据表,以及数据表对应的索引数组;获取索引数组的多个副本数组;通过多个副本数组分别抢占索引数组,并在多个副本数组中的任一副本数组抢占到索引数组时,通过抢占到索引数组的副本数组从索引数组中抢占预设个数的第一字符,直至索引数组中的第一字符全被抢占;在多个副本数组中的任一副本数组从索引数组中抢占到预设个数的第一字符时,通过该副本数组对应的线程将数据表中与该副本数组抢占到的第一字符对应的索引数据刷入搜索服务器。其中,数据表中还记录有每个索引数据对应的数据标识,索引数组所包含的第一字符的数量与数据标识的数量相同,且索引数组中的第一字符与数据表中的数据标识一一对应;多个副本数组与用于将索引数据刷入搜索服务器的多个线程一一对应。
可选的,处理器42执行计算机程序43时还实现如下步骤:使用预设的数据库锁锁死索引数组,以使抢占到索引数组的副本数组获取索引数组的游标的值,并从索引数组中游标的值对应的第一字符开始抢占预设个数的第一字符;在抢占到索引数组的副本数组从索引数组中抢占完预设个数的第一字符之后,解除数据库锁。其中,索引数组的游标的值在多个副本数组中任一副本数组抢占索引数组之前,被修改为索引数组中未被抢占的所有第一字符中的第一个第一字符在索引数组中的序号值。
可选的,副本数组所包含的第二字符的数量与索引数组所包含的第一字符的数量相同,且副本数组中的第二字符与索引数组中的第一字符一一对应;处理器42执行计算机程序43时还实现如下步骤:分别针对该副本数组从索引数组中抢占到的每个第一字符,检测数据表中与该第一字符对应的索引数据是否被成功刷入搜索服务器,当数据表中与该第一字符对应的索引数据被成功刷入搜索服务器时,将该副本数组中与该第一字符对应的第二字符修改为用于表征该第一字符对应的索引数据被成功刷入搜索服务器中的标识符。
可选的,第二字符为二进制数0和1中的一个,标识符为二进制数0和1中的另一个;处理器42执行计算机程序43时还实现如下步骤:按位对所有副本数组中的二进制数进行与运算,得到用于表征数据表中的索引数据的刷入进度的进度数组。其中,进度数组所包含的二进制数的数量与索引数组中第一字符的数量相同,进度数组中的二进制数与索引数组中的第一字符一一对应,且当进度数组中的二进制数为1时,表征该二进制数对应的索引数据未被成功刷入搜索服务器,当进度数组中的二进制数为0时,表征该二进制数对应的索引数据被成功刷入搜索服务器。
可选的,处理器42执行计算机程序43时还实现如下步骤:对索引数组进行复制操作,得到索引数组的多个副本数组。
即,搜索服务器刷索引的设备的处理器42执行计算机程序43时实现上述的搜索服务器刷索引的方法的步骤,能提升向搜索服务器中刷入索引数据的速度。
示例性的,上述计算机程序43可以被分割成一个或多个模块/单元,该一个或者多个模块/单元被存储在存储器41中,并由处理器42执行,以完成本发明。且该一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序43在搜索服务器刷索引的设备4中的执行过程。
上述搜索服务器刷索引的设备4可包括,但不仅限于处理器42、存储器41。本领域技术人员可以理解,所述示意图仅仅是搜索服务器刷索引的设备4的示例,并不构成对搜索服务器刷索引的设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如搜索服务器刷索引的设备4还可以包括输入输出设备、网络接入设备、总线等。
上述处理器42可以是中央处理单元(CPU,Central Processing Unit),还可以是其他通用处理器、数字信号处理器(DSP,Digital Signal Processor)、专用集成电路(ASIC,Application Specific Integrated Circuit)、现成可编程门阵列(FPGA,Field-Programmable Gate Array)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器42是搜索服务器刷索引的设备4的控制中心,利用各种接口和线路连接整个搜索服务器刷索引的设备4的各个部分。
上述存储器41可用于存储计算机程序43和/或模块,处理器42通过运行或执行存储在存储器41内的计算机程序43和/或模块,以及调用存储在存储器41内的数据,实现搜索服务器刷索引的设备4的各种功能。具体的,存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(SMC,Smart Media Card),安全数字(SD,SecureDigital)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
需要说明的是,由于搜索服务器刷索引的设备4的处理器42执行计算机程序43时实现上述的搜索服务器刷索引的方法的步骤,因此上述搜索服务器刷索引的方法的所有实施例均适用于该搜索服务器刷索引的设备4,且均能达到相同或相似的有益效果。
此外,本发明的具体实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述的搜索服务器刷索引的方法的步骤。
即,计算机可读存储介质的计算机程序被处理器执行时实现上述的搜索服务器刷索引的方法的步骤,能提升向搜索服务器中刷入索引数据的速度。
示例性的,计算机可读存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,由于计算机可读存储介质的计算机程序被处理器执行时实现上述的搜索服务器刷索引的方法的步骤,因此上述搜索服务器刷索引的方法的所有实施例均适用于该计算机可读存储介质,且均能达到相同或相似的有益效果。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种搜索服务器刷索引的方法,其特征在于,包括:
获取记录有待刷入搜索服务器的索引数据的数据表,以及所述数据表对应的索引数组;其中,所述数据表中还记录有每个所述索引数据对应的数据标识,所述索引数组所包含的第一字符的数量与所述数据标识的数量相同,且所述索引数组中的第一字符与所述数据表中的数据标识一一对应;
获取所述索引数组的多个副本数组;其中,所述多个副本数组与用于将所述索引数据刷入所述搜索服务器的多个线程一一对应;
通过所述多个副本数组分别抢占所述索引数组,并在所述多个副本数组中的任一副本数组抢占到所述索引数组时,使用预设的数据库锁锁死所述索引数组,以使抢占到所述索引数组的副本数组获取所述索引数组的游标的值,并从所述索引数组中所述游标的值对应的第一字符开始抢占预设个数的第一字符,直至所述索引数组中的第一字符全被抢占;其中,所述索引数组的游标的值在所述多个副本数组中任一副本数组抢占所述索引数组之前,被修改为所述索引数组中未被抢占的所有第一字符中的第一个第一字符在所述索引数组中的序号值,在抢占到所述索引数组的副本数组从所述索引数组中抢占完所述预设个数的第一字符之后,解除所述数据库锁;
在所述多个副本数组中的任一副本数组从所述索引数组中抢占到所述预设个数的第一字符时,通过该副本数组对应的线程将所述数据表中与该副本数组抢占到的第一字符对应的索引数据刷入所述搜索服务器。
2.根据权利要求1所述的方法,其特征在于,所述数据库锁为同步锁。
3.根据权利要求1所述的方法,其特征在于,所述副本数组所包含的第二字符的数量与所述索引数组所包含的第一字符的数量相同,且所述副本数组中的第二字符与所述索引数组中的第一字符一一对应;
在所述通过该副本数组对应的线程将所述数据表中与该副本数组抢占到的第一字符对应的索引数据刷入所述搜索服务器的步骤之后,所述方法还包括:
分别针对该副本数组从所述索引数组中抢占到的每个第一字符,检测所述数据表中与该第一字符对应的索引数据是否被成功刷入所述搜索服务器,当所述数据表中与该第一字符对应的索引数据被成功刷入所述搜索服务器时,将该副本数组中与该第一字符对应的第二字符修改为用于表征该第一字符对应的索引数据被成功刷入所述搜索服务器中的标识符。
4.根据权利要求3所述的方法,其特征在于,所述第二字符为二进制数0和1中的一个,所述标识符为二进制数0和1中的另一个。
5.根据权利要求4所述的方法,其特征在于,在所述分别针对该副本数组从所述索引数组中抢占到的每个第一字符,检测所述数据表中与该第一字符对应的索引数据是否被成功刷入所述搜索服务器,当所述数据表中与该第一字符对应的索引数据被成功刷入所述搜索服务器时,将该副本数组中与该第一字符对应的第二字符修改为用于表征该第一字符对应的索引数据被成功刷入所述搜索服务器中的标识符的步骤之后,所述方法还包括:
按位对所有副本数组中的二进制数进行与运算,得到用于表征所述数据表中的索引数据的刷入进度的进度数组;
其中,所述进度数组所包含的二进制数的数量与所述索引数组中第一字符的数量相同,所述进度数组中的二进制数与所述索引数组中的第一字符一一对应,且当所述进度数组中的二进制数为1时,表征该二进制数对应的索引数据未被成功刷入所述搜索服务器,当所述进度数组中的二进制数为0时,表征该二进制数对应的索引数据被成功刷入所述搜索服务器。
6.根据权利要求1所述的方法,其特征在于,所述获取所述索引数组的多个副本数组的步骤,包括:
对所述索引数组进行复制操作,得到所述索引数组的多个副本数组。
7.一种搜索服务器刷索引的装置,其特征在于,包括:
第一获取模块,用于获取记录有待刷入搜索服务器的索引数据的数据表,以及所述数据表对应的索引数组;其中,所述数据表中还记录有每个所述索引数据对应的数据标识,所述索引数组所包含的第一字符的数量与所述数据标识的数量相同,且所述索引数组中的第一字符与所述数据表中的数据标识一一对应;
第二获取模块,用于获取所述索引数组的多个副本数组;其中,所述多个副本数组与用于将所述索引数据刷入所述搜索服务器的多个线程一一对应;
抢占模块,用于通过所述多个副本数组分别抢占所述索引数组,并在所述多个副本数组中的任一副本数组抢占到所述索引数组时,使用预设的数据库锁锁死所述索引数组,以使抢占到所述索引数组的副本数组获取所述索引数组的游标的值,并从所述索引数组中所述游标的值对应的第一字符开始抢占预设个数的第一字符,直至所述索引数组中的第一字符全被抢占;其中,所述索引数组的游标的值在所述多个副本数组中任一副本数组抢占所述索引数组之前,被修改为所述索引数组中未被抢占的所有第一字符中的第一个第一字符在所述索引数组中的序号值,在抢占到所述索引数组的副本数组从所述索引数组中抢占完所述预设个数的第一字符之后,解除所述数据库锁;
数据处理模块,用于在所述多个副本数组中的任一副本数组从所述索引数组中抢占到所述预设个数的第一字符时,通过该副本数组对应的线程将所述数据表中与该副本数组抢占到的第一字符对应的索引数据刷入所述搜索服务器。
8.一种搜索服务器刷索引的设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的搜索服务器刷索引的方法的步骤。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的搜索服务器刷索引的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811197177.XA CN109522313B (zh) | 2018-10-15 | 2018-10-15 | 搜索服务器刷索引的方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811197177.XA CN109522313B (zh) | 2018-10-15 | 2018-10-15 | 搜索服务器刷索引的方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522313A CN109522313A (zh) | 2019-03-26 |
CN109522313B true CN109522313B (zh) | 2020-11-24 |
Family
ID=65772096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811197177.XA Active CN109522313B (zh) | 2018-10-15 | 2018-10-15 | 搜索服务器刷索引的方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522313B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999561A (zh) * | 2011-10-28 | 2013-03-27 | 微软公司 | 数据集和数据服务的上下文趋向 |
CN106255962A (zh) * | 2014-05-01 | 2016-12-21 | 斯凯孚公司 | 用于改进数据结构存储的系统和方法 |
CN107818115A (zh) * | 2016-09-14 | 2018-03-20 | 苏宁云商集团股份有限公司 | 一种处理数据表的方法及装置 |
CN104820692B (zh) * | 2015-04-28 | 2018-06-08 | 广东小天才科技有限公司 | 一种建立索引的方法及装置 |
CN108197200A (zh) * | 2017-12-27 | 2018-06-22 | 金蝶软件(中国)有限公司 | 日志追踪方法、装置、计算机设备和存储介质 |
-
2018
- 2018-10-15 CN CN201811197177.XA patent/CN109522313B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999561A (zh) * | 2011-10-28 | 2013-03-27 | 微软公司 | 数据集和数据服务的上下文趋向 |
CN106255962A (zh) * | 2014-05-01 | 2016-12-21 | 斯凯孚公司 | 用于改进数据结构存储的系统和方法 |
CN104820692B (zh) * | 2015-04-28 | 2018-06-08 | 广东小天才科技有限公司 | 一种建立索引的方法及装置 |
CN107818115A (zh) * | 2016-09-14 | 2018-03-20 | 苏宁云商集团股份有限公司 | 一种处理数据表的方法及装置 |
CN108197200A (zh) * | 2017-12-27 | 2018-06-22 | 金蝶软件(中国)有限公司 | 日志追踪方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109522313A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536752B (zh) | 一种数据同步方法、装置和设备 | |
DE2905328A1 (de) | Verfahren und vorrichtung zur assoziativen informationswiedergewinnung | |
CN110704398A (zh) | 从MySQL到Oracle的数据库迁移方法、装置及计算机设备 | |
DE2750721A1 (de) | Ein/ausgabe-system | |
CN108875077B (zh) | 数据库的列存储方法、装置、服务器及存储介质 | |
JP2021518021A (ja) | データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体 | |
JPH0863355A (ja) | プログラム制御装置及びプログラム制御方法 | |
DE102018109538A1 (de) | Techniken zum umfassenden Synchronisieren einer Ausführung von Threads | |
CN110647562B (zh) | 一种数据查询方法和装置、电子设备、存储介质 | |
US10185505B1 (en) | Reading a portion of data to replicate a volume based on sequence numbers | |
DE2611892A1 (de) | Mikroprogramm-steuersystem | |
CN112256656A (zh) | 事务回滚方法及装置、数据库、系统、计算机存储介质 | |
CN110716739A (zh) | 一种代码变更信息统计方法、系统和可读存储介质 | |
CN108038253B (zh) | 一种日志查询的处理方法及装置 | |
CN111522648B (zh) | 一种区块链的交易处理方法、装置及电子设备 | |
CN107885781B (zh) | 一种版本管理方法及系统 | |
CN109522313B (zh) | 搜索服务器刷索引的方法、装置、设备及可读存储介质 | |
CN111125459A (zh) | 字符串处理方法和装置 | |
CN115563116A (zh) | 一种数据库表扫描方法、装置以及设备 | |
CN115935917A (zh) | 一种可视化图表的数据处理方法、装置、设备及存储介质 | |
EP4134802A1 (en) | Method and apparatus for data access of nand flash file, and storage medium | |
CN114925127A (zh) | 级联结构数据的二维图表生成方法、装置、存储介质 | |
US9483323B2 (en) | Read and write operations on shared data resources in parallel processing systems | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN108008981B (zh) | 一种片上系统SoC中进行程序初始化的方法和装置 |
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 |