基于分布式数据库的全文搜索方法及系统与流程

文档序号:12177000阅读:221来源:国知局
基于分布式数据库的全文搜索方法及系统与流程

本发明涉及检索技术领域,特别涉及一种基于分布式数据库的全文搜索方法及系统。



背景技术:

在信息技术高速发展的今天,无论是互联网的数据量还是企业内部的数据量等,都在以指数趋势增长。在该大数据背景下,分布式数据库成为解决大数据瓶颈的重要手段。其中,分布式数据库包括主控节点和多个数据节点。分布式数据库中的各个数据表分片存储于各个数据节点中。由于分布式数据库中存储的数据量很大,如何从分布式数据库中搜索到所需数据,受到社会广泛关注。通常,为了加快从分布式数据库中搜索所需数据的速度,通常通过全文搜索方法实现。全文搜索方法是指搜索引擎预先对分布式数据库中的每一个词建立一个索引,以指明每个词在分布式数据库所包括的文档中出现的次数和位置。当用户查询时,搜索引擎根据事先建立的索引进行搜索,并将搜索结果反馈给用户的检索方式。

现有技术在实现基于分布式数据库的全文搜索方法时,通常采用的方法为:主控节点接收终端发送的搜索请求,并将搜索请求下发至每个数据节点,该搜索请求携带待搜索内容;每个数据节点与对应的搜索引擎实例通信,得到每个数据节点对应的搜索结果;每个数据节点将对应的搜索结果返回至主控节点;主控节点将每个数据节点对应的搜索结果返回至终端。其中,在数据节点存储数据时,通常将每个数据表分为多个数据片,一个数据节点存储一个数据片。另外,每个数据节点对应一个搜索引擎实例,且每个数据节点对应的搜索引擎实例根据每个数据节点存储的数据片生成。

在实现本发明的过程中,发明人发现相关技术至少存在以下不足:

现有技术中,由于每个数据节点获得的搜索结果为基于其搜索引擎实例得到的,而各个数据节点对应的搜索引擎实例是基于各个数据节点存储的数据片 得到的,使得各个数据节点获得的搜索结果不是基于分布式数据库的全部数据得到的,因此,直接将每个数据节点获得的搜索结果作为最终的搜索结果,将会导致搜索结果不精准。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于分布式数据库的全文搜索方法及系统。所述技术方案如下:

第一方面,提供了一种基于分布式数据库的全文搜索方法,所述分布式数据库包括主控节点和多个数据节点,所述分布式数据库连接至所述指定搜索引擎,所述指定搜索引擎存储所述分布式数据库包括的数据表的索引,且所述指定搜索引擎的索引根据所述分布式数据库包括的所有数据表生成,所述方法包括:

所述主控节点接收终端发送的搜索请求,所述搜索请求携带待搜索内容;

所述主控节点判断所述搜索请求是否为下推搜索请求;

当确定所述搜索请求为下推搜索请求时,所述主控节点将所述搜索请求发送至所述多个数据节点;

每个数据节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到所述每个数据节点对应的第一搜索结果;

所述每个数据节点确定对应的第一搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果;

所述每个数据节点将对应的第二搜索结果发送至所述主控节点;

所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果;

所述主控节点将所述第三搜索结果发送至所述终端。

结合第一方面,在第一方面的第一种可能的实现方式中,所述主控节点判断所述搜索请求是否为下推搜索请求之后,还包括:

当确定所述搜索请求为非下推搜索请求时,所述主控节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到第四搜索结果;

所述主控节点将所述第四搜索结果及所述搜索请求发送至所述多个数据节点;

所述每个数据节点确定所述第四搜索结果与所存储的数据片中的重叠数据, 将所述重叠数据作为每个数据节点对应的第二搜索结果。

结合第一方面,在第一方面的第二种可能的实现方式中,所述主控节点接收终端发送的搜索请求之前,还包括:

所述主控节点接收所述终端发送的索引建立请求;

所述主控节点根据所述索引建立请求,获取所述分布式数据库包括的每个数据表的概要;

所述主控节点将每个数据表的概要的类型转换为指定类型,所述指定类型为所述指定搜索引擎所支持的数据类型;

所述主控节点将指定类型的概要发送至所述指定搜索引擎,使所述指定搜索引擎将所述指定类型的概要作为所述指定搜索引擎的索引。

结合第一方面,在第一方面的第三种可能的实现方式中,所述第二搜索结果包括至少一条数据记录及每条数据记录的得分,所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果,包括:

所述主控节点根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序;

所述主控节点根据排序结果,从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将所述指定数值条数据记录作为所述第三搜索结果。

结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:

所述主控节点或任一数据节点检测所述分布式数据库中是否存在更新数据;

当所述主控节点或所述数据节点检测到将所述分布式数据库中存在更新数据时,所述主控节点或所述数据节点将更新数据的更新字段写入缓存,由所述指定搜索引擎周期从所述缓存中读取更新数据的更新字段,并根据所述更新数据的更新字段更新索引。

结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述主控节点或任一数据节点检测所述分布式数据库中是否存在更新数据,包括:

所述主控节点或所述任一数据节点检测任一数据表中的触发器是否被触发,所述触发器注册于所述数据表中,且所述触发器用于监控数据更新;

当所述数据表中的触发器被触发时,所述主控节点或所述数据节点确定所述分布式数据库中存在更新数据。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:

所述主控节点从所述指定搜索引擎获取不同搜索方式对应的搜索能力数据;

所述主控节点根据每种搜索方式对应的搜索能力数据,确定目标搜索方式,以通过所述目标搜索方式处理后续搜索请求。

第二方面,提供了一种基于分布式数据库的全文搜索系统,所述全文搜索系统包括分布式数据库和指定搜索引擎,所述分布式数据库包括主控节点和多个数据节点,所述分布式数据库连接至所述指定搜索引擎,所述指定搜索引擎存储所述分布式数据库包括的数据表的索引,且所述指定搜索引擎的索引根据所述分布式数据库包括的所有数据表生成;其中:

所述主控节点,用于接收终端发送的搜索请求,判断所述搜索请求是否为下推搜索请求,当确定所述搜索请求为下推搜索请求时,将所述搜索请求发送至所述多个数据节点,所述搜索请求携带待搜索内容;

每个数据节点,用于根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到所述每个数据节点对应的第一搜索结果,并确定对应的第一搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果,将对应的第二搜索结果发送至所述主控节点;

所述主控节点,还用于整理所有数据节点发送的第二搜索结果,得到第三搜索结果,将所述第三搜索结果发送至所述终端。

结合第二方面,在第二方面的第一种可能的实现方式中,所述主控节点,还用于当确定所述搜索请求为非下推搜索请求时,根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到第四搜索结果;将所述第四搜索结果及所述搜索请求发送至所述多个数据节点;

所述每个数据节点,还用于确定所述第四搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果。

结合第二方面,在第二方面的第二种可能的实现方式中,所述主控节点,还用于接收所述终端发送的索引建立请求,根据所述索引建立请求,获取所述分布式数据库包括的每个数据表的概要;将每个数据表的概要的类型转换为指 定类型,所述指定类型为所述指定搜索引擎所支持的数据类型;将指定类型的概要发送至所述指定搜索引擎,使所述指定搜索引擎将所述指定类型的概要作为所述指定搜索引擎的索引。

结合第二方面,在第二方面的第三种可能的实现方式中,所述第二搜索结果包括至少一条数据记录及每条数据记录的得分,所述主控节点,还用于根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序;根据排序结果,从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将所述指定数值条数据记录作为所述第三搜索结果。

结合第二方面的第二种可能的实现方式,在第二方面的第四种可能的实现方式中,所述主控节点或任一数据节点,还用于检测所述分布式数据库中是否存在更新数据;当所述主控节点或所述数据节点检测到将所述分布式数据库中存在更新数据时,所述主控节点或所述数据节点将更新数据的更新字段写入缓存,由所述指定搜索引擎周期从所述缓存中读取更新数据的更新字段,并根据所述更新数据的更新字段更新索引。

结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述主控节点或任一数据节点,还用于检测任一数据表中的触发器是否被触发,所述触发器注册于所述数据表中,且所述触发器用于监控数据更新;当所述数据表中的触发器被触发时,所述主控节点或所述数据节点确定所述分布式数据库中存在更新数据。

结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述主控节点,还用于从所述指定搜索引擎获取不同搜索方式对应的搜索能力数据;根据每种搜索方式对应的搜索能力数据,确定目标搜索方式,以通过所述目标搜索方式处理后续搜索请求。

本发明实施例提供的技术方案带来的有益效果是:

通过设置指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,并由每个数据节点根据指定搜索引擎的索引,获得对待搜索内容的第一搜索结果后,每个数据节点确定对应的第一搜索结果与所存储的数据片中的数据的重叠数据为第二搜索结果,并将对应的第二搜索结果发送至主控节点,主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果后,将第三搜索结 果作为最终的搜索结果。由于每个数据节点对应的第一搜索结果为基于指定搜索引擎的索引得到的,而指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,使得每个数据节点对应的第一搜索结果为基于分布式数据库的全部数据得到的,因此,搜索结果更加精准。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种基于分布式数据库的全文搜索方法所涉及的实施环境示意图;

图2是本发明另一实施例提供的一种基于分布式数据库的全文搜索方法的流程图;

图3是本发明另一实施例提供的一种基于分布式数据库的全文搜索方法的流程图;

图4是本发明另一实施例提供的一种索引建立过程的示意图;

图5是本发明另一实施例提供的一种搜索过程的示意图;

图6是本发明另一实施例提供的一种搜索过程的示意图;

图7是本发明另一实施例提供的一种索引更新过程的示意图;

图8是本发明另一实施例提供的一种确定目标搜索方式的过程示意图;

图9是本发明另一实施例提供的一种全文搜索系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

如图1所示,其示出了一种本发明实施例提供的基于分布式数据库的全文搜索方法所涉及的实施环境示意图。如图1所示,该实施环境为一个全文搜索系统,该全文搜索系统包括分布式数据库101和指定搜索引擎102。

其中,分布式数据库101包括主控节点1011和多个数据节点1012。分布式 数据库101所存储的各个数据表分片存储于各个数据节点1012上,即每个数据节点1012存储一个数据片。指定搜索引擎102中存储了分布式数据库101所存储的各个数据表的索引。当终端需要对分布式数据库101中的任意内容进行搜索时,本发明实施例根据指定搜索引擎102的索引实现,而无需对分布式数据库101中的各个数据表进行遍历,因而能够加快搜索速度。

具体地,主控节点1011负责接收终端请求,并负责向终端返回结果。另外,在一些实施例中,主控节点1011还负责将请求分发给多个数据节点1012,以使得多个数据节点1012执行查询或存储等操作。主控节点1011可以部署于一台或多台主机上。其中,主控节点1011接收及分发的请求可以为搜索请求,也可以为索引建立请求等等。

指定搜索引擎102负责对外部数据建立索引,例如,本发明实施例中的指定搜索引擎102负责对分布式数据库101包括的所有数据表建立索引,并提供对分布式数据库101存储的所有数据表中的数据的全文搜索服务。其中,指定搜索引擎102中包括控制逻辑(CONTROLLER),控制逻辑是指定搜索引擎102的入口,负责索引建立以及提供搜索接口。

本发明实施例中,在分布式数据库101后端连接指定搜索引擎102,且分布式数据库101通过内置扩展插件(MPP-Embed)与指定搜索引擎102通信。扩展插件可以内置于主控节点1011和各个数据节点1012中。扩展插件支持将分布式数据库101中的数据导入到指定搜索引擎102中,建立索引(INDEX DB DATA),并提供在分布式数据库101里基于SQL(Structured Query Language,结构化查询语言)的查询能力,将分布式数据库101的搜索请求转换为指定搜索引擎102的搜索请求。另外,扩展插件可获取根据指定搜索引擎的索引得到的搜索结果,使得分布式数据库101中的各个数据节点1012将搜索结果与本地存储的数据片进行整理后,将整理后的搜索结果返回至终端。

本发明实施例中,指定搜索引擎102可以为SOLR(独立的企业级搜索应用服务器)等。

需要说明的是,图1中仅示出了指定搜索引擎102中包括的控制逻辑,事实上,指定搜索引擎102可以为一个搜索集群,该搜索集群包括多个节点(CORE),控制逻辑部署于一个或多个节点上。

另外,本发明实施例提供的方法可以扩展到将分布式数据库101与其它大 规模系统,如分布式文件系统、云计算平台、互联网和可扩展的存储系统之间的交互。本公开实施例以与分布式数据库101交互的设备为指定搜索引擎为例进行说明。具体的基于分布式数据库的全文搜索方法详见下述各个实施例:

结合图1所示的实施环境示意图,图2是根据一示例性实施例提供的一种基于分布式数据库的全文搜索方法的流程图,该基于分布式数据库的全文搜索方法应用于图1所示的全文搜索系统。参见图2,本发明实施例提供的方法流程包括:

201、主控节点接收终端发送的搜索请求,其中,搜索请求携带待搜索内容。

202、主控节点判断搜索请求是否为下推搜索请求。

203、当确定搜索请求为下推搜索请求时,主控节点将搜索请求发送至多个数据节点。

204、每个数据节点根据指定搜索引擎的索引对待搜索内容进行搜索,得到每个数据节点对应的第一搜索结果。

205、每个数据节点确定对应的第一搜索结果与所存储的数据片中的重叠数据,将重叠数据作为每个数据节点对应的第二搜索结果。

206、每个数据节点将对应的第二搜索结果发送至主控节点。

207、主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果。

208、主控节点将第三搜索结果发送至终端。

本发明实施例提供的方法,通过设置指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,并由每个数据节点根据指定搜索引擎的索引,获得对待搜索内容的第一搜索结果后,每个数据节点确定对应的第一搜索结果与所存储的数据片中的数据的重叠数据为第二搜索结果,并将对应的第二搜索结果发送至主控节点,主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果后,将第三搜索结果作为最终的搜索结果。由于每个数据节点对应的第一搜索结果为基于指定搜索引擎的索引得到的,而指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,使得每个数据节点对应的第一搜索结果为基于分布式数据库的全部数据得到的,因此,搜索结果更加精准。

在另一个实施例中,主控节点判断搜索请求是否为下推搜索请求之后,还包括:

当确定搜索请求为非下推搜索请求时,主控节点根据指定搜索引擎的索引对待搜索内容进行搜索,得到第四搜索结果;

主控节点将第四搜索结果及搜索请求发送至多个数据节点;

每个数据节点确定第四搜索结果与所存储的数据片中的重叠数据,将重叠数据作为每个数据节点对应的第二搜索结果。

在另一个实施例中,主控节点接收终端发送的搜索请求之前,还包括:

主控节点接收终端发送的索引建立请求;

主控节点根据索引建立请求,获取分布式数据库包括的每个数据表的概要;

主控节点将每个数据表的概要的类型转换为指定类型,其中,指定类型为指定搜索引擎所支持的数据类型;

主控节点将指定类型的概要发送至指定搜索引擎,使指定搜索引擎将指定类型的概要作为指定搜索引擎的索引。

在另一个实施例中,第二搜索结果包括至少一条数据记录及每条数据记录的得分,主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果,包括:

主控节点根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序;

主控节点根据排序结果,从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将指定数值条数据记录作为第三搜索结果。

在另一个实施例中,方法还包括:

主控节点或任一数据节点检测分布式数据库中是否存在更新数据;

当主控节点或数据节点检测到将分布式数据库中存在更新数据时,主控节点或数据节点将更新数据的更新字段写入缓存,由指定搜索引擎周期从缓存中读取更新数据的更新字段,并根据更新数据的更新字段更新索引。

在另一个实施例中,主控节点或任一数据节点检测分布式数据库中是否存在更新数据,包括:

主控节点或任一数据节点检测任一数据表中的触发器是否被触发,其中,触发器注册于数据表中,且触发器用于监控数据更新;

当数据表中的触发器被触发时,主控节点或数据节点确定分布式数据库中存在更新数据。

在另一个实施例中,方法还包括:

主控节点从指定搜索引擎获取不同搜索方式对应的搜索能力数据;

主控节点根据每种搜索方式对应的搜索能力数据,确定目标搜索方式,以通过目标搜索方式处理后续搜索请求。

结合图2所对应实施例的内容,图3是根据一示例性实施例提供的一种基于分布式数据库的全文搜索方法的流程图,该基于分布式数据库的全文搜索方法应用于图1所示的全文搜索系统。参见图3,本发明实施例提供的方法流程包括:

301、主控节点接收终端发送的搜索请求,其中,搜索请求携带待搜索内容。

当终端需要从分布式数据库存储的数据中搜索某一个待搜索内容时,通过向分布式数据库中的主控节点发送搜索请求来触发。主控节点接收终端发送的搜索请求后,触发搜索流程。其中,为了便于全文搜索系统确定终端需要搜索什么内容,搜索请求中携带待搜索内容。

本发明实施例在对分布式数据库包括的任一数据表的数据进行搜索时,通过指定搜索引擎提供的索引来实现。因此,在提供搜索服务之前,需要先建立指定搜索引擎的索引。具体地,在建立指定搜索引擎的索引时,包括但不限于通过如下步骤301.1至步骤301.4来实现:

301.1、主控节点接收终端发送的索引建立请求。

具体地,当在分布式数据库中生成了数据表,或者新增了数据表、或者修改了数据表时,终端可以向主控节点发送索引建立请求,主控节点接收终端发送的索引建立请求后,触发索引建立流程。

其中,索引建立请求可以包括索引名称、索引标识字段名称、需要建立索引的字段列表。其中,索引名称可以为数据表的名称;索引标识字段名称可以为数据表的各个字段名称,需要建立索引的字段列表可以为数据表中的任意数值的字段名称。例如,索引建立请求对应的代码可以为:

“SelectFTSearch.createindex('Persons','PersonID','lastname:firstname:Addre ss:City')”。

301.2、主控节点根据索引建立请求,获取分布式数据库包括的每个数据表的概要。

本发明实施例在建立索引时,根据分布式数据库包括的数据表建立。具体地,本发明实施例对每个数据表建立一个索引,而不是针对每个数据节点存储的数据片建立一个索引。也就是说,每个数据表对应一个全局唯一的索引,各个数据表的索引构成指定搜索引擎的索引。

具体地,在对每个数据表建立索引时,本发明实施例根据每个数据表的概要实现。因此,主控节点在接收索引建立请求后,获取分布式数据库包括的每个数据表的概要(SCHEMA)。其中,主控节点在获取分布式数据库包括的每个数据表的概要时,可以由其扩展插件(MPP-Embed)实现。

301.3、主控节点将每个数据表的概要的类型转换为指定类型,其中,指定类型为指定搜索引擎所支持的数据类型。

该步骤为将每个数据表的概要的类型与指定搜索引擎所支持的数据类型做相关映射的过程。通常,分布式数据库中存储的数据的类型与指定搜索引擎所支持的数据类型可能不同。例如,分布式数据库中的数据类型为“float”(浮点型),而指定数据库所支持的数据类型为int(整型)。为了能够通过指定搜索引擎的索引实现对待搜索内容的搜索,主控节点将每个数据表的概要的类型转换为指定类型。

在另一个实施例中,主控节点在将每个数据表的概要的类型转换为指定类型之后,还可以对每个数据表的概要进行一定的分词配置。例如,在进行分词时,对于整型数据,可以不对其进行分词;对于文本,可以按系统配置进行N元分词;对于标识(ID),可以将其作为一个字符串(STRING)不分词等。

301.4、主控节点将指定类型的概要发送至指定搜索引擎,指定搜索引擎将指定类型的概要作为指定搜索引擎的索引。

具体地,主控节点将指定类型的概要通过扩展插件发送至指定搜索引擎。指定搜索引擎接收该指定类型的概要后,存储每个数据表的指定类型的概要,并创建一个包括各个数据表的索引的唯一索引集群作为指定搜索引擎的索引。具体地,结合图1所示的全文搜索系统,可以由控制逻辑管理指定搜索引擎的索引。优选地,指定搜索引擎的索引为全表倒排索引。

如图4所示,其示出了一种索引建立过程的示意图。

302、主控节点判断搜索请求是否为下推搜索请求,当确定搜索请求为下推搜索请求时,执行步骤303;当确定搜索请求为非下推搜索请求时,执行步骤 306。

本发明实施例中,当搜索请求为下推搜索请求和非下推搜索请求时,获取搜索结果的方式不同。为了确定以哪种方式获取搜索结果,主控节点需要先判断搜索请求是否为下推搜索请求。

其中,搜索请求中携带能够搜索请求类型的标识,根据该标识可以确定搜索请求是下推搜索请求还是非下推搜索请求。因此,主控节点在判断搜索请求是否为下推搜索请求时,可以解析搜索请求,得到搜索请求类型的标识,根据该搜索请求类型的标识判断搜索请求是否为下推搜索请求。

303、主控节点将搜索请求发送至多个数据节点。

该步骤至303至步骤305结合步骤309和310为当主控节点确定搜索请求为下推搜索请求时,主控节点获取搜索结果的实现方式。其中,步骤至303至步骤305为各个数据节点根据指定搜索引擎的索引获取搜索结果时的实现方式。如图5所示,其示出了一种当主控节点确定搜索请求为下推搜索请求时,进行搜索过程的示意图。

具体地,当主控节点确定搜索请求为下推搜索请求时,主控节点先将该搜索请求发送至多个数据节点中的每个数据节点。其中,由于各个数据节点与主控节点通常通过并行方式连接,因此,在将搜索请求发送至多个数据节点时,主控节点可以同时将该搜索请求发送至每个数据节点。

304、每个数据节点根据指定搜索引擎的索引对待搜索内容进行搜索,得到每个数据节点对应的第一搜索结果。

在本发明实施例中,每个数据节点统一对接指定搜索引擎,因此,每个数据节点可以根据指定搜索引擎的索引获取对待搜索内容的搜索结果。具体地,每个数据节点可以通过扩展插件调用指定搜索引擎的接口,实现根据指定搜索引擎的索引对待搜索内容进行搜索。由于指定搜索引擎的索引基于分布式数据库的所有数据表建立而成,因此,每个数据节点对应的第一搜索结果为基于分布式数据库的全局数据得到的。

其中,每个数据节点根据指定搜索引擎的索引对待搜索内容进行搜索时,可以通过不同类型的搜索方式实现。例如。每个数据节点可以对待搜索内容进行分词,得到各个检索词,然后将各个检索词与指定搜索引擎的索引中的每个词语进行比对,从而得到每个数据节点对应的搜索结果。又例如,每个数据节 点可以对待搜索内容进行分词,得到各个检索词,然后通过哈希算法计算每个检索词的哈希值,并将每个检索词的哈希值与指定搜索引擎的索引中的每个词语的哈希值进行比对,从而得到每个数据节点对应的搜索结果。

305、每个数据节点确定对应的第一搜索结果与所存储的数据片中的重叠数据,将重叠数据作为每个数据节点对应的第二搜索结果后,执行步骤309。

其中,对于任一数据节点,该数据节点在确定对应的第一搜索结果与该数据节点所存储的数据片中的重叠数据时,可以将该数据节点对应的第一搜索结果与该数据节点存储的数据片取交集,将该交集中的数据记录作为该数据节点对应的第二搜索结果。

例如,如果数据节点A存储的数据片包括100条数据记录,数据节点A对应的第一搜索结果包括120条数据记录,该100条数据记录与该120条数据记录的交集包括10条数据记录,则数据节点A将该10条数据记录作为数据节点A对应的第二搜索结果。

306、主控节点根据指定搜索引擎中的索引对待搜索内容进行搜索,得到第四搜索结果。

该步骤306至步骤308结合步骤309和310为当主控节点确定搜索请求为非下推搜索请求时,主控节点获取搜索结果的实现方式。其中,步骤至306至步骤308主控节点根据指定搜索引擎的索引获取搜索结果时的实现方式。如图6所示,其示出了一种当主控节点确定搜索请求为非下推搜索请求时,进行搜索过程的示意图。

具体地,主控节点可以通过扩展插件调用指定搜索引擎的接口,实现根据指定搜索引擎的索引对待搜索内容进行搜索。由于指定搜索引擎的索引基于分布式数据库的所有数据表建立而成,因此,第四搜索结果为基于分布式数据库的全局数据得到的。

主控节点根据指定搜索引擎的索引对待搜索内容进行搜索时,可以通过不同类型的搜索方式实现。例如。主控节点可以对待搜索内容进行分词,得到各个检索词,然后将各个检索词与指定搜索引擎的索引中的每个词语进行比对,从而得到第四搜索结果。又例如,主控节点可以对待搜索内容进行分词,得到各个检索词,然后通过哈希算法计算每个检索词的哈希值,并将每个检索词的哈希值与指定搜索引擎的索引中的每个词语的哈希值进行比对,从而得到第四 搜索结果。

307、主控节点将第四搜索结果及搜索请求发送至多个数据节点。

在本发明实施例中,主控节点在接收到搜索请求后,不直接下发至多个数据节点,而是由主控节点先根据搜索请求获取第四搜索结果,并将第四搜索结果连同搜索请求同时发送至多个数据节点。

通过该种方式获取搜索结果时,由于主控节点一次性向多个数据节点发送第四搜索结果及搜索请求,因而无需各个数据节点分别与指定搜索引擎进行交互,从而能够减少分布式数据库与指定搜索引擎之间的交互次数,因而不仅能够节省系统资源,而且能够加快搜索速度。

308、每个数据节点确定第四搜索结果与所存储的数据片中的重叠数据,将重叠数据作为每个数据节点对应的第二搜索结果后,执行步骤309。

该步骤的原理同步骤305的原理一致,具体可参见步骤305中的内容,此处不再赘述。

309、每个数据节点将对应的第二搜索结果发送至主控节点。

具体地,结合图1所示的全文搜索系统,由于该主控节点负责与终端之间的通信,因此,各个数据节点在获取到对应的第二搜索结果时,将对应的第二搜索结果发送至主控节点。

310、主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果。

其中,主控节点在整理所有数据节点发送的第二搜索结果时,可以直接整合所有数据节点发送的对应第二搜索结果,而不对各个数据节点对应的第二搜索结果进行处理。

然而,在另一个实施例中,由于每个数据节点对应的第二搜索结果中可能均包括多条数据记录,如果直接整合所有数据节点对应的第二搜索结果,则获得的第三搜索结果中可能会包括很多条数据记录。此时,如果直接将第三搜索结果返回终端,会使终端获得很多条数据记录,使得向终端返回的第三搜索结果不具针对性。为了避免该种情况出现,每个数据节点对应的第二搜索结果除包括数据记录外,还包括每条数据记录的得分。在此基础上,主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果时,可以根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序。主控节点根据排序结果,从所有数据节点对应的第二搜索结 果中确定得分最高的指定数值条数据记录,将指定数值条数据记录作为第三搜索结果。

其中,每条数据记录的得分可以为每条数据记录的DF(Document Frequency,文档频次)或词频等。

具体地,主控节点在对所有数据节点对应的第二搜索结果进行排序时,可以按照得分由高到低的顺序排序,也可以按照得分由低到高的顺序排序。

关于指定数值的具体数值范围,可以根据需要设定,例如,指定数值可以为10、20等。

在本发明实施例中,由于每个数据节点对应的第二搜索结果为根据分布式数据库的全局数据获得的,因此,每条数据记录的得分为基于全局数据得到的,因此,得分更具参考性,使得主控节点确定的第三搜索结果更加准确。而在现有技术中,即使每个数据节点根据对应的搜索引擎实例获得的搜索结果包括得分,然而其得分是根据基于各个数据节点所存储的数据片得到的,因此,得分不具参考性。

另外,通过从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将指定数值条数据记录作为第三搜索结果,使得确定的搜索结果更具针对性。例如,当搜索请求中设置了指定数值的具体数量,通过从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,从而使得最终的搜索结果包括的数据记录的数量与搜索引擎所指定的数据记录的数量相等,不仅使得搜索结果更具针对性,而且能够最大程度地满足用户需求。然而,在现有技术中,当搜索请求中指定了搜索结果包括的数据记录的数量时,每个数据节点会获得的搜索结果中将会包括该指定数值的数据记录,使得向终端返回的搜索结果中的数据记录的数量远大于该指定数值,不仅使得搜索结果不具针对性,而且不能满足用户需求。例如,如果搜索请求中设置的指定数值为10,且共有10个数据节点,则每个数据节点会获得包括10条数据记录的搜索结果,因此,向终端返回的搜索结果中包括100条数据记录。

311、主控节点将第三搜索结果发送至终端。

关于主控节点将第三搜索结果发送至终端的方式,本发明实施例不作具体限定。具体地,搜索请求中通常还包括终端的标识。因此,主控节点在将第三搜索结果发送至终端时,可以根据终端的标识,将第三搜索结果发送至终端。

在另一个实施例中,由于分布式数据库中各个数据表中的数据是实时更新的,当数据表中的数据更新后,数据表的概要将发生更新,而指定搜索引擎的索引是根据分布式数据库所包括的数据表的概要建立的,因此,当分布式数据库中任一数据表中存在更新数据时,可能需要更新指定搜索引擎的索引。其中,更新指定搜索引擎的索引的方式可以通过如下步骤A和步骤B来实现:

步骤A、主控节点或任一数据节点检测分布式数据库中是否存在更新数据。

更新数据可以是新增的数据,也可以是删除的数据,还可以是被修改的数据。

其中,每个数据表中可以注册触发器(TRIGGER),且触发器可以用于监控数据更新。在此基础上,主控节点或任一数据节点检测分布式数据库中是否存在更新数据时,包括但不限于:主控节点或任一数据节点检测任一数据表中的触发器是否被触发。当该数据表中的触发器被触发时,主控节点或该数据节点确定分布式数据库中存在更新数据。当数据表中注册的触发器未被触发时,主控节点或该数据节点确定分布式数据库中不存在更新数据。

步骤B、当主控节点或数据节点检测到将分布式数据库中存在更新数据时,主控节点或数据节点将更新数据的更新字段写入缓存。

其中,缓存可以为独立于分布式数据库和指定搜索引擎的中间层。更新数据的更新字段可以为更新数据对应的主关键字。

步骤C、指定搜索引擎周期从缓存中读取更新数据的更新字段,并根据更新数据的更新字段更新索引。

其中,关于指定搜索引擎从缓存中读取更新数据的更新字段的周期,本发明实施例不作具体限定。具体实施时,可以根据需要设定。例如,该周期为每天、每周等。然而,为了能够实时更新索引,该周期可以设置得比较短。例如,该周期可以为1小时、2小时等。

如图7所示,其示出了一种更新索引的过程示意图。

当然,上述过程为一种更新索引的方式,然而,在具体实施时,还可以由指定搜索引擎根据预设时间周期,主动检测分布式数据库的数据表中是否存在数据更新,并在确定任一数据表存在数据更新时,更新其索引。其中,指定搜索引擎检测分布式数据库的数据表中是否存在数据更新时,可以根据每条数据记录的唯一标识来确定。具体地,该标识可以为哈希值。当任一条数据记录的 哈希值发生变化时,确定该条数据记录发生了更新。

通过上述索引更新流程,使得全文搜索系统可以自动实现索引的更新,而无需用户通过手动方式更新索引,更新索引方式更加智能化。

结合步骤301至步骤311所述的搜索流程,在步骤304或步骤306中,每个数据节点或主控节点在根据指定搜索引擎中的索引对待搜索内容进行搜索时,可以通过不同的搜索方式实现。然而,当采用不同的搜索方式进行搜索时,所需的搜索时间或者所得到的搜索结果包括的数据记录的数目可能并不相同。在此基础上,为了能够优化全文搜索系统的搜索速度,从而提高全文搜索系统的性能。

在另一个实施例中,指定搜索引擎会记录每种搜索方式的搜索能力数据。主控节点可以从指定搜索引擎获取每种搜索方式对应的搜索能力数据,并根据每种搜索方式对应的搜索能力数据,确定目标搜索方式。在此基础上,当后续再次接收搜索请求时,主控节点可以通过该目标搜索方式,根据指定搜索引擎的索引对待搜索数据进行搜索。或者,当后续再次接收搜索请求时,主控节点可以指示各个数据节点通过该目标搜索方式,根据指定搜索引擎的索引对待搜索数据进行搜索。如图8所示,其示出了一种主控节点确定目标搜索方式的过程示意图。

其中,搜索能力数据可以为主控节点或每个数据节点根据指定搜索引擎的索引获取搜索结果的时间、指定搜索引擎向主控节点或数据节点返回的搜索记结果所包括的数据记录的数目中的至少一种。

本发明实施例提供的方法,通过设置指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,并由每个数据节点根据指定搜索引擎的索引,获得对待搜索内容的第一搜索结果后,每个数据节点确定对应的第一搜索结果与所存储的数据片中的数据的重叠数据为第二搜索结果,并将对应的第二搜索结果发送至主控节点,主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果后,将第三搜索结果作为最终的搜索结果。由于每个数据节点对应的第一搜索结果为基于指定搜索引擎的索引得到的,而指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,使得每个数据节点对应的第一搜索结果为基于分布式数据库的全部数据得到的,因此,搜索结果更加精准。

图9是根据一示例性实施例提供的一种基于分布式数据库的全文搜索系统的结构示意图。参见图9,该全文搜索系统包括分布式数据库901和指定搜索引擎902。其中:分布式数据库包括主控节点和多个数据节点,分布式数据库连接至指定搜索引擎,指定搜索引擎存储分布式数据库包括的数据表的索引,且指定搜索引擎的索引根据分布式数据库包括的所有数据表生成;其中:

主控节点,用于接收终端发送的搜索请求,判断搜索请求是否为下推搜索请求,当确定搜索请求为下推搜索请求时,将搜索请求发送至多个数据节点,搜索请求携带待搜索内容;

每个数据节点,用于根据指定搜索引擎的索引对待搜索内容进行搜索,得到每个数据节点对应的第一搜索结果,并确定对应的第一搜索结果与所存储的数据片中的重叠数据,将重叠数据作为每个数据节点对应的第二搜索结果,将对应的第二搜索结果发送至主控节点;

主控节点,还用于整理所有数据节点发送的第二搜索结果,得到第三搜索结果,将第三搜索结果发送至终端。

在另一个实施例中,主控节点,还用于当确定搜索请求为非下推搜索请求时,根据指定搜索引擎的索引对待搜索内容进行搜索,得到第四搜索结果;将第四搜索结果及搜索请求发送至多个数据节点;

每个数据节点,还用于确定第四搜索结果与所存储的数据片中的重叠数据,将重叠数据作为每个数据节点对应的第二搜索结果。

在另一个实施例中,主控节点,还用于接收终端发送的索引建立请求,根据索引建立请求,获取分布式数据库包括的每个数据表的概要;将每个数据表的概要的类型转换为指定类型,指定类型为指定搜索引擎所支持的数据类型;将指定类型的概要发送至指定搜索引擎,使指定搜索引擎将指定类型的概要作为指定搜索引擎的索引。

在另一个实施例中,第二搜索结果包括至少一条数据记录及每条数据记录的得分,主控节点,还用于根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序;根据排序结果,从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将指定数值条数据记录作为第三搜索结果。

在另一个实施例中,主控节点或任一数据节点,还用于检测分布式数据库 中是否存在更新数据;当主控节点或数据节点检测到将分布式数据库中存在更新数据时,主控节点或数据节点将更新数据的更新字段写入缓存,由指定搜索引擎周期从缓存中读取更新数据的更新字段,并根据更新数据的更新字段更新索引。

在另一个实施例中,主控节点或任一数据节点,还用于检测任一数据表中的触发器是否被触发,其中,触发器注册于数据表中,且触发器用于监控数据更新;当数据表中的触发器被触发时,主控节点或数据节点确定分布式数据库中存在更新数据。

在另一个实施例中,主控节点,还用于从指定搜索引擎获取不同搜索方式对应的搜索能力数据;根据每种搜索方式对应的搜索能力数据,确定目标搜索方式,以通过目标搜索方式处理后续搜索请求。

本发明实施例提供的全文搜索系统,通过设置指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,并由每个数据节点根据指定搜索引擎的索引,获得对待搜索内容的第一搜索结果后,每个数据节点确定对应的第一搜索结果与所存储的数据片中的数据的重叠数据为第二搜索结果,并将对应的第二搜索结果发送至主控节点,主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果后,将第三搜索结果作为最终的搜索结果。由于每个数据节点对应的第一搜索结果为基于指定搜索引擎的索引得到的,而指定搜索引擎的索引根据分布式数据库包括的所有数据表生成,使得每个数据节点对应的第一搜索结果为基于分布式数据库的全部数据得到的,因此,搜索结果更加精准。

需要说明的是:上述实施例提供的基于分布式数据库的全文搜索系统与基于分布式数据库的全文搜索方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1