基于分布式数据库的全文搜索方法及系统技术方案

技术编号:14783411 阅读:118 留言:0更新日期:2017-03-10 04:33
本发明专利技术公开一种基于分布式数据库的全文搜索方法及系统,属于检索技术领域。包括:主控节点接收终端发送的搜索请求,确定为下推搜索请求时发送至多个数据节点;每个数据节点根据指定搜索引擎的索引对待搜索内容进行搜索,得到对应的第一搜索结果,确定对应的第一搜索结果与所存储的数据片中的重叠数据为对应的第二搜索结果,并发送至主控节点;主控节点整理所有数据节点发送的第二搜索结果得到第三搜索结果,将第三搜索结果发送至终端。由于每个数据节点对应的第一搜索结果基于指定搜索引擎的索引得到,而索引根据分布式数据库包括的所有数据表生成,使每个数据节点对应的第一搜索结果基于分布式数据库的全部数据得到,因此,搜索结果更加精准。

【技术实现步骤摘要】

本专利技术涉及检索
,特别涉及一种基于分布式数据库的全文搜索方法及系统
技术介绍
在信息技术高速发展的今天,无论是互联网的数据量还是企业内部的数据量等,都在以指数趋势增长。在该大数据背景下,分布式数据库成为解决大数据瓶颈的重要手段。其中,分布式数据库包括主控节点和多个数据节点。分布式数据库中的各个数据表分片存储于各个数据节点中。由于分布式数据库中存储的数据量很大,如何从分布式数据库中搜索到所需数据,受到社会广泛关注。通常,为了加快从分布式数据库中搜索所需数据的速度,通常通过全文搜索方法实现。全文搜索方法是指搜索引擎预先对分布式数据库中的每一个词建立一个索引,以指明每个词在分布式数据库所包括的文档中出现的次数和位置。当用户查询时,搜索引擎根据事先建立的索引进行搜索,并将搜索结果反馈给用户的检索方式。现有技术在实现基于分布式数据库的全文搜索方法时,通常采用的方法为:主控节点接收终端发送的搜索请求,并将搜索请求下发至每个数据节点,该搜索请求携带待搜索内容;每个数据节点与对应的搜索引擎实例通信,得到每个数据节点对应的搜索结果;每个数据节点将对应的搜索结果返回至主控节点;主控节点将每个数据节点对应的搜索结果返回至终端。其中,在数据节点存储数据时,通常将每个数据表分为多个数据片,一个数据节点存储一个数据片。另外,每个数据节点对应一个搜索引擎实例,且每个数据节点对应的搜索引擎实例根据每个数据节点存储的数据片生成。在实现本专利技术的过程中,专利技术人发现相关技术至少存在以下不足:现有技术中,由于每个数据节点获得的搜索结果为基于其搜索引擎实例得到的,而各个数据节点对应的搜索引擎实例是基于各个数据节点存储的数据片得到的,使得各个数据节点获得的搜索结果不是基于分布式数据库的全部数据得到的,因此,直接将每个数据节点获得的搜索结果作为最终的搜索结果,将会导致搜索结果不精准。
技术实现思路
为了解决现有技术的问题,本专利技术实施例提供了一种基于分布式数据库的全文搜索方法及系统。所述技术方案如下:第一方面,提供了一种基于分布式数据库的全文搜索方法,所述分布式数据库包括主控节点和多个数据节点,所述分布式数据库连接至所述指定搜索引擎,所述指定搜索引擎存储所述分布式数据库包括的数据表的索引,且所述指定搜索引擎的索引根据所述分布式数据库包括的所有数据表生成,所述方法包括:所述主控节点接收终端发送的搜索请求,所述搜索请求携带待搜索内容;所述主控节点判断所述搜索请求是否为下推搜索请求;当确定所述搜索请求为下推搜索请求时,所述主控节点将所述搜索请求发送至所述多个数据节点;每个数据节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到所述每个数据节点对应的第一搜索结果;所述每个数据节点确定对应的第一搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果;所述每个数据节点将对应的第二搜索结果发送至所述主控节点;所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果;所述主控节点将所述第三搜索结果发送至所述终端。结合第一方面,在第一方面的第一种可能的实现方式中,所述主控节点判断所述搜索请求是否为下推搜索请求之后,还包括:当确定所述搜索请求为非下推搜索请求时,所述主控节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到第四搜索结果;所述主控节点将所述第四搜索结果及所述搜索请求发送至所述多个数据节点;所述每个数据节点确定所述第四搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果。结合第一方面,在第一方面的第二种可能的实现方式中,所述主控节点接收终端发送的搜索请求之前,还包括:所述主控节点接收所述终端发送的索引建立请求;所述主控节点根据所述索引建立请求,获取所述分布式数据库包括的每个数据表的概要;所述主控节点将每个数据表的概要的类型转换为指定类型,所述指定类型为所述指定搜索引擎所支持的数据类型;所述主控节点将指定类型的概要发送至所述指定搜索引擎,使所述指定搜索引擎将所述指定类型的概要作为所述指定搜索引擎的索引。结合第一方面,在第一方面的第三种可能的实现方式中,所述第二搜索结果包括至少一条数据记录及每条数据记录的得分,所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果,包括:所述主控节点根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序;所述主控节点根据排序结果,从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将所述指定数值条数据记录作为所述第三搜索结果。结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述方法还包括:所述主控节点或任一数据节点检测所述分布式数据库中是否存在更新数据;当所述主控节点或所述数据节点检测到将所述分布式数据库中存在更新数据时,所述主控节点或所述数据节点将更新数据的更新字段写入缓存,由所述指定搜索引擎周期从所述缓存中读取更新数据的更新字段,并根据所述更新数据的更新字段更新索引。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述主控节点或任一数据节点检测所述分布式数据库中是否存在更新数据,包括:所述主控节点或所述任一数据节点检测任一数据表中的触发器是否被触发,所述触发器注册于所述数据表中,且所述触发器用于监控数据更新;当所述数据表中的触发器被触发时,所述主控节点或所述数据节点确定所述分布式数据库中存在更新数据。结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述方法还包括:所述主控节点从所述指定搜索引擎获取不同搜索方式对应的搜索能力数据;所述主控节点根据每种搜索方式对应的搜索能力数据,确定目标搜索方式,以通过所述目标搜索方式处理后续搜索请求。第二方面,提供了一种基于分布式数据库的全文搜索系统,所述全文搜索系统包括分布式数据库和指定搜索引擎,所述分布式数据库包括主控节点和多个数据节点,所述分布式数据库连接至所述指定搜索引擎,所述指定搜索引擎存储所述分布式数据库包括的数据表的索引,且所述指定搜索引擎的索引根据所述分布式数据库包括的所有数据表生成;其中:所述主控节点,用于接收终端发送的搜索请求,判断所述搜索请求是否为下推搜索请求,当确定所述搜索请求为下推搜索请求时,将所述搜索请求发送至所述多个数据节点,所述搜索请求携带待搜索内容;每个数据节点,用于根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到所述每个数据节点对应的第一搜索结果,并确定对应的第一搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果,将对应的第二搜索结果发送至所述主控节点;所述主控节点,还用于整理所有数据节点发送的第二搜索结果,得到第三搜索结果,将所述第三搜索结果发送至所述终端。结合第二方面,在第二方面的第一种可能的实现方式中,所述主控节点,还用于当确定所述搜索请求为非下推搜索请求时,根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到第四搜索结果;将所述第四搜索结果及所述搜索请求发送至所述多个数据节点;所述每个数据节点,还用于确定所述第四搜索结本文档来自技高网
...
基于分布式数据库的全文搜索方法及系统

【技术保护点】
一种基于分布式数据库的全文搜索方法,其特征在于,所述分布式数据库包括主控节点和多个数据节点,所述分布式数据库连接至所述指定搜索引擎,所述指定搜索引擎存储所述分布式数据库包括的数据表的索引,且所述指定搜索引擎的索引根据所述分布式数据库包括的所有数据表生成,所述方法包括:所述主控节点接收终端发送的搜索请求,所述搜索请求携带待搜索内容;所述主控节点判断所述搜索请求是否为下推搜索请求;当确定所述搜索请求为下推搜索请求时,所述主控节点将所述搜索请求发送至所述多个数据节点;每个数据节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到所述每个数据节点对应的第一搜索结果;所述每个数据节点确定对应的第一搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果;所述每个数据节点将对应的第二搜索结果发送至所述主控节点;所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果;所述主控节点将所述第三搜索结果发送至所述终端。

【技术特征摘要】
1.一种基于分布式数据库的全文搜索方法,其特征在于,所述分布式数据库包括主控节点和多个数据节点,所述分布式数据库连接至所述指定搜索引擎,所述指定搜索引擎存储所述分布式数据库包括的数据表的索引,且所述指定搜索引擎的索引根据所述分布式数据库包括的所有数据表生成,所述方法包括:所述主控节点接收终端发送的搜索请求,所述搜索请求携带待搜索内容;所述主控节点判断所述搜索请求是否为下推搜索请求;当确定所述搜索请求为下推搜索请求时,所述主控节点将所述搜索请求发送至所述多个数据节点;每个数据节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到所述每个数据节点对应的第一搜索结果;所述每个数据节点确定对应的第一搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果;所述每个数据节点将对应的第二搜索结果发送至所述主控节点;所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果;所述主控节点将所述第三搜索结果发送至所述终端。2.根据权利要求1所述的方法,其特征在于,所述主控节点判断所述搜索请求是否为下推搜索请求之后,还包括:当确定所述搜索请求为非下推搜索请求时,所述主控节点根据所述指定搜索引擎的索引对所述待搜索内容进行搜索,得到第四搜索结果;所述主控节点将所述第四搜索结果及所述搜索请求发送至所述多个数据节点;所述每个数据节点确定所述第四搜索结果与所存储的数据片中的重叠数据,将所述重叠数据作为每个数据节点对应的第二搜索结果。3.根据权利要求1所述的方法,其特征在于,所述主控节点接收终端发送的搜索请求之前,还包括:所述主控节点接收所述终端发送的索引建立请求;所述主控节点根据所述索引建立请求,获取所述分布式数据库包括的每个数据表的概要;所述主控节点将每个数据表的概要的类型转换为指定类型,所述指定类型为所述指定搜索引擎所支持的数据类型;所述主控节点将指定类型的概要发送至所述指定搜索引擎,使所述指定搜索引擎将所述指定类型的概要作为所述指定搜索引擎的索引。4.根据权利要求1所述的方法,其特征在于,所述第二搜索结果包括至少一条数据记录及每条数据记录的得分,所述主控节点整理所有数据节点发送的第二搜索结果,得到第三搜索结果,包括:所述主控节点根据每个数据节点对应的第二搜索结果中每条数据记录的得分,对所有数据节点对应的第二搜索结果进行排序;所述主控节点根据排序结果,从所有数据节点对应的第二搜索结果中确定得分最高的指定数值条数据记录,将所述指定数值条数据记录作为所述第三搜索结果。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:所述主控节点或任一数据节点检测所述分布式数据库中是否存在更新数据;当所述主控节点或所述数据节点检测到将所述分布式数据库中存在更新数据时,所述主控节点或所述数据节点将更新数据的更新字段写入缓存,由所述指定搜索引擎周期从所述缓存中读取更新数据的更新字段,并根据所述更新数据的更新字段更新索引。6.根据权利要求5所述的方法,其特征在于,所述主控节点或任一数据节点检测所述分布式数据库中是否存在更新数据,包括:所述主控节点或所述任一数据节点检测任一数据表中的触发器是否被触发,所述触发器注册于所述数据表中,且所述触发器用于监控数据更新;当所述数据表中的触发器被触发时,所述主控节点或所述数据节点确定所述分布式数据库中存在更新数据。7.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:所述主控节点从所述指定搜索引擎获取不同搜索方式对应的搜...

【专利技术属性】
技术研发人员:王楠楠林铭赵伟
申请(专利权)人:杭州华为数字技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1