CN110162522B - 一种分布式数据搜索系统及方法 - Google Patents

一种分布式数据搜索系统及方法 Download PDF

Info

Publication number
CN110162522B
CN110162522B CN201910430191.8A CN201910430191A CN110162522B CN 110162522 B CN110162522 B CN 110162522B CN 201910430191 A CN201910430191 A CN 201910430191A CN 110162522 B CN110162522 B CN 110162522B
Authority
CN
China
Prior art keywords
index
search
database
data
module
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
Application number
CN201910430191.8A
Other languages
English (en)
Other versions
CN110162522A (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.)
WUHAN PUBLIC SECURITY BUREAU
Wuhan Fiberhome Digtal Technology Co Ltd
Original Assignee
WUHAN PUBLIC SECURITY BUREAU
Wuhan Fiberhome Digtal Technology 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 WUHAN PUBLIC SECURITY BUREAU, Wuhan Fiberhome Digtal Technology Co Ltd filed Critical WUHAN PUBLIC SECURITY BUREAU
Priority to CN201910430191.8A priority Critical patent/CN110162522B/zh
Publication of CN110162522A publication Critical patent/CN110162522A/zh
Application granted granted Critical
Publication of CN110162522B publication Critical patent/CN110162522B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供了一种分布式数据搜索系统及方法,所述系统包括数据采集模块、索引管理模块和搜索模块,其中,所述数据采集模块,用于采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;所述索引管理模块,用于针对所述数据库构建索引库;所述搜索模块,用于获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。应用本发明实施例,提高了搜索效率。

Description

一种分布式数据搜索系统及方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种分布式数据搜索系统及方法。
背景技术
随着数据的爆炸式增长,快速地从海量数据中搜索到所需的数据变得越来越重要。
目前,数据搜索方式通常为:采用正则匹配算法,把采集到的数据和指定数据进行匹配对比。整个搜索过程通常由单平台完成,在数据量很大的情况下,由于单平台的资源有限,且通过正则匹配算法进行匹配对比,会耗费大量的时间,导致数据搜索效率不高。
因此有必要设计一种新的数据搜索方法,以克服上述问题。
发明内容
本发明的目的在于克服现有技术之缺陷,提供了一种分布式数据搜索系统及方法,以实现提高搜索效率。
本发明是这样实现的:
第一方面,本发明提供一种分布式数据搜索系统,所述系统包括数据采集模块、索引管理模块和搜索模块,其中,
所述数据采集模块,用于采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;
所述索引管理模块,用于针对所述数据库构建索引库;
所述搜索模块,用于获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。
可选的,所述系统还包括评分排序模块,
所述排序模块,用于计算所述语义与所述搜索结果之间的相关度,并按照相关度大小,对所述搜索结果进行排序。
可选的,所构建的索引库为多个不同等级的索引库,索引管理模块针对所述数据库构建索引库,具体为:
在获得数据库的修改消息后,基于所获得的修改消息修改最低级别的索引库中的索引;在获得数据库的新增消息后,基于所获得的新增消息在最低级别的索引库中新增索引;
针对每一等级的索引库,按照该等级的预设时间间隔,发送该等级的索引库中的索引至高一等级的索引库,在发送至高一等级的索引库后,清除该等级的索引库中的索引;在高一等级的索引库中将其自身索引与该等级的索引库的索引合并。
可选的,所述数据采集模块将清洗后的数据储存至数据库,具体为:
将清洗后的数据封装成消息体,将所述消息体写入消息队列中;判断所述数据库中是否包含所述消息体的标识信息;
若已包含,则用所述消息体更新所述数据库中具有该标识信息的消息体;并向所述索引管理模块的消息队列写入修改消息;
若不包含,则将所述消息体的标识信息和所述消息体对应存储至数据库,并向所述索引管理模块的消息队列写入新增消息。
可选的,所述索引管理模块基于所获得的修改消息修改最低级别的索引库中的索引,具体为:将所获得的修改消息封装成修改请求;用所述修改请求调用索引引擎的接口,以使索引引擎按照所述修改请求修改最低级别的索引库中的索引;
所述索引管理模块基于所获得的新增消息在最低级别的索引库中新增索引,具体为:将所获得的新增消息封装成新增请求;用所述新增请求调用索引引擎的接口,以使索引引擎按照所述新增请求新增最低级别的索引库中的索引。
可选的,数据采集模块、索引管理模块和搜索模块均以集群的方式构建。
可选的,所述搜索模块对所接收的搜索请求进行解析,得到语义,具体为:
判断所述搜索请求是否包含操作符;
若包含操作符,则提取所述搜索请求中的关键词和操作符;将所提取的关键词和操作符分别写入关键词队列和操作符队列;依次从操作符队列、关键词队列中分别读取操作符和关键词,按照操作符和关键词的读取顺序构建语义;
若不包含操作符,则直接提取所述搜索请求中的关键词作为语义。
可选的,所述搜索模块根据语义查找索引库,得到目标索引,具体为:
若语义包含操作符,则基于操作符的预设逻辑对语义中的关键词确定查询条件;将索引库中满足所述查询条件的索引作为目标索引;
若语义不包含操作符,则将索引库中包含语义中关键词的索引作为目标索引。
可选的,所述系统还包括缓存模块,所述搜索模块还用于:
检测到用户输入的字符后,用拼音识别算法识别用所检测到的字符,得到识别结果;用识别结果查找所述缓存模块,得到包含识别结果的关键词,作为提示词;显示提示词。
第二方面,本发明提供一种分布式数据搜索方法,应用于上述任一所述的分布式数据搜索系统,所述方法包括:
采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;
针对所述数据库构建索引库;
获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。
本发明具有以下有益效果:应用本发明实施例,可以通过各个模块之间的相互配合完成数据搜索,扩展了整个数据搜索过程中可以使用的计算资源,使得整个系统具备大规模的计算能力,并且数据库中的数据是经过清洗的,减少了错误数据和重复数据,减少了不必要的搜索,提高了搜索效率;通过构建索引库,使得索引库和数据库相互独立,彼此之间互不干扰,从而能够快速的进行数据搜索,进一步提高了搜索效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的分布式数据搜索系统的一种结构示意图;
图2为本发明实施例提供的各等级的索引库的异步合并流程示意图;
图3为本发明实施例提供的分布式数据搜索方法的一种流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为解决现有技术问题,本发明实施例提供了一种分布式数据搜索系统及方法。下面首先对本发明所提供的一种分布式数据搜索系统进行说明。
参见图1,图1为本发明实施例提供的一种分布式数据搜索系统的结构示意图,系统包括数据采集模块101、索引管理模块102和搜索模块103,其中,
所述数据采集模块101,用于采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;
所述索引管理模块102,用于针对所述数据库构建索引库;
所述搜索模块103,用于获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。
数据采集模块、索引管理模块和搜索模块可以均为独立存在的物理实体,可以为同一种类型的物理实体,也可以为不同类型的物理实体数据采集模块、索引管理模块和搜索模块也可以为逻辑功能模块,当它们为逻辑功能模块时,可以将它们设置于同一个物理实体中,也可以将它们设置于不同的物理实体中,本发明实施例对它们的存在形态不做限定。
例如,数据采集模块可以为数据采集工具,例如,爬虫工具等,或者,也可以为具备数据采集功能的软件,例如Wireshark软件等。索引管理模块可以为计算机、个人电脑、服务器、手机或分布式服务器集群等,搜索模块可以为服务器或分布式服务器集群。
为了提高各模块的处理能力,数据采集模块、索引管理模块和搜索模块还可以均以集群的方式构建。例如搜索模块可以包括接入集群,用于接收搜索请求并进行搜索合并等简单处理。再例如索引管理模块可以包括索引集群,用于完成索引构建功能,也可以构建一个将服务进程和索引数据部署在同一台机器上,服务进程启动时可以加载索引数据到内存,请求访问时从内存中load数据,从而提高访问速度;索引集群中有多台机器,可以对索引数据进行水平切分,通过增加切分份数,可以无限扩展性能,满足数据容量的扩展性。同一份数据进行了冗余,满足一份数据的性能扩展性(冗余之后一份数据多个备份,搜索模块可以同时对多个备份同时处理,提高效率)。
由于集群可以通过增加机器来提高计算性能和扩大并发量,因此,以集群的方式构建模块,有利于灵活调整各模块的处理能力,合理分配机器资源。
数据采集模块可以实时采集到各类数据,可以通过直接对接一些业务系统,定期采集各业务系统的数据,也可以接受其他信息系统的推送数据,所采集的各类数据可以包括:人员信息和车辆信息,人员信息可以包括身份证、年龄、性别、籍贯、姓名等等,车辆信息可以包括车辆的行驶轨迹、车辆的颜色、车辆的型号、车牌号、车主的身份证号等等。
数据采集模块可以对所采集的各类数据进行清洗、备分、扩展、数据筛查等等,例如某次采集数据包括姓名A、安徽人,后续采集的数据包括A的身份证号码和和A所拥有汽车的车牌号,则数据扩展可以得到一条数据记录为:姓名A、安徽人、A的身份证号码和和A所拥有汽车的车牌号,数据备份可以对一份数据进行多个备份,从而系统可以同时对多个备份同步处理,提高处理效率。数据筛查可以筛除重复和格式错乱的数据,清洗可以包括检查数据一致性,处理无效值和缺失值等,通过清洗和数据筛查可以得到正确数据,从而可以将正确数据存储至数据库,实现了采集数据的统一清洗和持久性存储。
索引管理模块可以管理和构建索引库,以应对亿级甚至是百亿级的数据量的检索,为了提高搜索效率及解决全文索引的局限性,索引管理模块可以采用外置的索引引擎(例如ElasticSearch)构建索引库。索引库中可以存储索引,从而实现分离索引数据与数据库中的原始数据。
索引可以加快搜索效率,更好的满足搜索需求,数据库中的原始数据可以满足数据的增、删、改、查需求,通过双写机制/消息通知机制/定期重建机制来保证索引和原始数据的一致性,当原始数据新增或修改时,索引管理模块也能及时新增/修改索引,从而保证了搜索结果的实时性和数据一致性。
索引管理模块可以对数据库中的文档、图片、视频等数据建立索引,以对文档建立索引为例,所建立的索引可以包括文档的关键词、作者、主题内容、发布时间等。数据库可以为mysql、ORACLE等。为保证数据库的数据查询和修改性能,当数据量达到百万级或千万级以上时,可采用HBase等分布式、面向列的开源数据库。
为了保证大数量、高并发情况下搜索结果的实时性,索引管理模块可以构建多个不同等级的索引库,索引管理模块针对所述数据库构建索引库,具体可以为:
在获得数据库的修改消息后,可以基于所获得的修改消息修改最低级别的索引库中的索引;在获得数据库的新增消息后,基于所获得的新增消息在最低级别的索引库中新增索引;
针对每一等级的索引库,按照作用于该等级的索引库的预设时间间隔,发送该等级的索引库中的索引至高一等级的索引库,在发送至高一等级的索引库后,清除该等级的索引库中的索引;在高一等级的索引库中将其自身索引与该等级的索引库的索引合并。
数据库的修改消息用于表明数据库中的数据发生了修改;数据库的新增消息用于表明数据库中新增了数据。另外,在获得查询请求后,可以同步查询各个级别的索引库,将从各个等级的索引库中查找所得的结果合并。
通过构建多个等级的索引库,避免了全部读写都在同一个索引库中而造成延时。另外,低等级的索引库可以定期将自身索引发送给高等级索引库,在发送给高等级索引库后,可以清除自身索引,从而,低等级的索引库可以保证自身数量处在合适的体量,提高索引管理效率;高等级索引库在获得低等级索引库的索引后,可以将自身索引和低等级索引库的索引合并。通过使用异步工具定时将低级别索引库的索引合并到较高级别的索引库中去。保证低等级索引库数据不会累积。
为了进一步提高效率,索引管理模块可以用两个异步工具完成索引合并,其中,一个工具用于定期将低等级索引库中的在线数据导出为离线数据,另一个工具用于将离线数据合并到高等级索引库中。在线数据是当前存在于索引库中的索引数据,离线数据是当前未存在于索引库中的索引数据。
例如,参加图2,索引库可以包括全量索引库,天增量索引库,时增量索引库,等级依次降低;在获得新增消息或修改消息后,索引管理模块只操作最低级别的索引库,也就是时增量索引库;在获得查询请求后,索引管理模块会同步查询全量索引库,天增量索引库,时增量索引库,并将来自各索引库的查询结果合并。同时,通过异步工具,时增量索引库可以每小时合并到天增量索引库中;天增量索引库可以每天合并到全量索引库中,这样就保证的时增量索引库和天增量索引库中的数据量都不会特别大。
或者,在其他实现方式中,所构建的索引库也可以只为一个,这种情况下,在获得修改消息后,则基于修改消息修改索引库中的索引;在获得新增消息后,则基于新增消息在索引库中新增索引。
搜索模块可以解析搜索请求,并通过调用索引引擎的接口执行搜索请求,得到索引引擎返回的搜索结果。搜索模块可以支持简单查询和高级查询两种查询模式;简单查询是指直接根据搜索请求中的关键词,查询出所有匹配关键词的目标索引;高级查询可以根据搜索请求中的关键词和操作符确定查询条件,查询出所有匹配查询条件的目标索引。进而,可以用目标索引搜索查找数据库,得到搜索结果。搜索结果即为数据库中具有与目标索引所包含关键词相同的数据。通过索引查找,可以提高查询效率。
一种实现方式中,所述数据采集模块将清洗后的数据储存至数据库,具体可以为:
将清洗后的数据封装成消息体,将所述消息体写入消息队列中;判断所述数据库中是否包含所述消息体的标识信息;
若已包含,则用所述消息体更新所述数据库中具有该标识信息的消息体;并向所述索引管理模块的消息队列写入修改消息;
若不包含,则将所述消息体的标识信息和所述消息体对应存储至数据库,并向所述索引管理模块的消息队列写入新增消息。
数据采集模块可以定期从数据资源站点(例如网络,FTP文件系统等)抽取数据,然后将数据封装成消息体,消息体可以包括数据的关键词,数据来源标识、数据的上传者等信息,进而将消息体写入消息队列中,数据采集模块可以包括数据写入单元,用于将消息队列中的消息体进行写入数据库中,在写入过程中,可以根据消息体的标识信息判断消息体是否已经在数据库中保存,标识信息可以包括数据的关键词,数据来源标识等;如果已经在数据库中保存,就进行更新,同时将修改消息写入索引管理模块的消息队列中;
相应的,索引管理模块可以包括数据读取单元来读取消息队列,在读取到修改消息后,就修改最低级别的索引库中的索引;在读取到新增消息后,在最低级别的索引库中新增索引。
消息队列可以为ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ或RocketMQ等。
一种实现方式中,所述索引管理模块基于所获得的修改消息修改最低级别的索引库中的索引,具体为:将所获得的修改消息封装成修改请求;用所述修改请求调用索引引擎的接口,以使索引引擎按照所述修改请求修改最低级别的索引库中的索引;
所述索引管理模块基于所获得的新增消息在最低级别的索引库中新增索引,具体为:将所获得的新增消息封装成新增请求;用所述新增请求调用索引引擎的接口,以使索引引擎按照所述新增请求新增最低级别的索引库中的索引。
具体的,搜索模块对所接收的搜索请求进行解析,得到语义,可以为:
判断所述搜索请求是否包含操作符;
若包含操作符,则提取所述搜索请求中的关键词和操作符;将所提取的关键词和操作符分别写入关键词队列和操作符队列;依次从操作符队列、关键词队列中分别读取操作符和关键词,按照操作符和关键词的读取顺序构建语义;
若不包含操作符,则直接提取所述搜索请求中的关键词作为语义。
可以统一先提取搜索请求中的关键词和操作符;进而分别写入关键词队列和操作符队列;实现对搜索请求的快速提取;然后直接通过读取队列得到由操作符和关键词构成的语义,提高了语义构建效率。
所述搜索模块根据语义查找索引库,得到目标索引,具体为:
若语义包含操作符,则基于操作符的预设逻辑对语义中的关键词确定查询条件;将索引库中满足所述查询条件的索引作为目标索引;
若语义不包含操作符,则将索引库中包含语义中关键词的索引作为目标索引。
操作符可以包括半角的双引号(“”)、加号(+)、减号(-)、通配符、布尔运算符、元词等等。基于操作符的预设逻辑对语义中的关键词确定查询条件,可以包括以下几种情况:
若搜索请求的关键词带有双引号,可以确定查询条件为对关键词的精确查询,也就是所得的目标索引要精确匹配关键词,不包括演变形式。例如输入关键词“华为”,它就会返回索引库中包含“华为”这个关键词的目标索引,而不会返回诸如“中华作为”之类的索引。
若搜索请求的关键词前面有加号,可以确定查询条件为:搜索模块所得的目标索引需要包含加号后的关键词,例如,搜索请求包含“+电脑+电话+传真”,就表示所得的目标索引要同时包含“电脑、电话、传真”这三个关键词。
若搜索请求的关键词前面有减号,可以确定查询条件为:搜索模块所得的目标索引中不能包含减号后的关键词,例如,搜索请求包含“大桥-长江大桥”,它就表示所得的目标索引中一定不包含“长江大桥”。
通配符可以包括星号(*)和问号(?),前者表示匹配的数量不受限制,后者匹配的字符数要受到限制。例如搜索请求包含“computer*”,就可以找到包含“computer、computers、computerised、computerized”等关键词的目标索引,而输入“comp?ter”,则只能找到包含“computer、compater、competer”等关键词的目标索引。
布尔运算符可以包含“and、or、not”等等,若关键词之间用“and”连接,可以确定查询条件为:两个关键词要同时出现在目标索引中;关键词之间使用“or”连接,可以确定查询条件为:两个关键词只要有一个出现在目标索引中即可。“not”处在关键词之前,可以确定查询条件为:该关键词不能出现在目标索引中。
在关键词之前加上预定义的元词,这样可以指定目标索引具有哪些特征。例如,搜索请求包含“标题:重要讲话”,这样可以查到标题内容中包含“重要讲话”的目标索引。
示例性的,搜索模块在获得搜索请求后,若搜索请求中不包含操作符,就使用简单查询,也就是将索引库中包含语义中关键词的索引作为目标索引。若搜索请求中包含操作符,就使用高级查询,也就是基于操作符的预设逻辑对语义中的关键词确定查询条件,例如语义为“(双引号)华为”(双引号)+手机or平板-笔记本,
搜索模块首先会将关键词与操作符分别提取出来放到两个队列中,如关键词队列:{华为,手机,平板,笔记本}和操作符队列{双引号,+,or,-},
然后依次取出操作符和关键词构建查询条件(查询条件是指能被索引引擎识别的查询规则),如在操作符队列中取出双引号,再在关键词队列中取出华为,则构建查询条件为:精确查找“华为”。然后在操作符队列中取出+,在关键词队列中取出手机,则结合已经构建的查询条件“精确查找华为”,组合出新的查询条件:查找精确包含关键字华为并带有关键字手机的记录,后面的依次类推,直至操作符队列和关键词队列均为空,则可以解析出完整的查询条件。
可见,应用本发明实施提供的技术方案,可以针对数据库构建索引库,在获得搜索请求后,可以对搜索请求进行解析,得到语义;并根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果,通过各个模块之间的相互配合,数据搜索过程中的各个步骤可以由不同的服务器执行,扩展了整个数据搜索过程中可以使用的资源,使得整个系统具备大规模的计算能力,并且数据库中的数据是经过清洗的,减少了错误数据和重复数据,减少了不必要的搜索,提高了搜索效率;通过构建索引库,使得索引库和数据库相互独立,彼此之间互不干扰,从而能够快速的进行数据搜索,进一步提高了搜索效率。
又一种实现方式中,搜索模块还可以给出关键词提示,例如可以根据热门搜索、搜索记录、同义词、拼音模糊匹配汉字等给出关键词提示,例如,一种实现实施可以为,所述系统还包括缓存模块,所述搜索模块还用于:
检测到用户输入的字符后,用拼音识别算法识别用所检测到的字符,得到识别结果;用识别结果查找所述缓存模块,得到包含识别结果的关键词,作为提示词;显示提示词。
缓存模块可以存储搜索记录、同义词等等,缓存模块可以是独立于搜索模块的另一服务器或服务器集群,也可以包含于搜索模块中。缓存模块还可以以键值对的方式保存用户搜索的关键词及次数(关键词:搜索次数),在搜索请求中每解析出一次关键词,然后在缓存模块将该关键词的搜索次数加一,从而可以将历史搜索次数排名在前100或前50的作为热门词,并可以在检测到用户输入的字符后,显示热门词。
或者,在搜索模块中可预先配置关键词的黑白名单,白名单中的关键词直接作为热门词,黑名单中的关键词会在搜索时自动屏蔽。
通过构建缓存模块和拼音识别算法,可以在用户输入时给出搜索提示,可以包括显示提示词和热门词,从而可以获得用户从所显示的提示词和热门词中选择的目标提示词,作为用户输入的关键词,实现了便于用户输入关键词。
又一种实现方式中,所述系统还包括评分排序模块,
所述排序模块,用于计算所述语义与所述搜索结果之间的相关度,并按照相关度大小,对所述搜索结果进行排序。
具体的,可以采用WMD(word mover's distance)算法或BM25算法等文本语义相似度计算算法计算语义与搜索结果之间的相关度。
另一种实现方式中,评分排序模块还可以包括预设评分匹配规则,预设评分匹配规则可以根据需求预先设定,例如当搜索请求包含“感冒”时,可以不考虑计算所得的相关度,直接将搜索结果中包含目标匹配词的文档排在前面;目标匹配词为预设评分匹配规则中设置的“感冒”所对应的匹配词(例如“莆田医院”)。
一种实现方式中,搜索模块获得搜索请求,具体可以为:
获得用户通过人机交互界面输入的关键词和/或操作符,在接收到用户的提交指令后,基于用户输入的关键词和/或操作符,生成搜索请求;或者,
获得用户通过终端设备发送的搜索请求。
搜索模块可以提供人机交互界面,从而用户可以通过人机交互界面输入关键词和/或操作符,用户输入完成后,可以点击人机交互界面的提交按钮,从而人机交互界面可以生成提交指令,搜索模块可以获得提交指令,并基于用户输入的关键词和/或操作符,生成搜索请求;或者,终端设备可以获得用户输入的关键词和/或操作符,并用所获得的关键词和/或操作符生成搜索请求,进而可以将搜索请求发送给搜索模块,终端设备可以是手机、个人电脑、平板等具有通讯功能的电子设备。
相应于上述分布式数据搜索系统实施例,本发明实施例提供了一种分布式数据搜索方法,参见图3所示,方法包括:
S201、采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;
S202、针对所述数据库构建索引库;
S203、获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。
可见,应用本发明实施提供的技术方案,可以通过各个模块之间的相互配合完成数据搜索,扩展了整个数据搜索过程中可以使用的计算资源,使得整个系统具备大规模的计算能力,并且数据库中的数据是经过清洗的,减少了错误数据和重复数据,减少了不必要的搜索,提高了搜索效率;通过构建索引库,使得索引库和数据库相互独立,彼此之间互不干扰,从而能够快速的进行数据搜索,进一步提高了搜索效率。
可选的,所述方法还包括:计算所述语义与所述搜索结果之间的相关度,并按照相关度大小,对所述搜索结果进行排序。
可选的,所构建的索引库为多个不同等级的索引库,针对所述数据库构建索引库,包括:
在获得数据库的修改消息后,基于所获得的修改消息修改最低级别的索引库中的索引;在获得数据库的新增消息后,基于所获得的新增消息在最低级别的索引库中新增索引;
针对每一等级的索引库,按照该等级的预设时间间隔,发送该等级的索引库中的索引至高一等级的索引库,在发送至高一等级的索引库后,清除该等级的索引库中的索引;在高一等级的索引库中将其自身索引与该等级的索引库的索引合并。
可选的,将清洗后的数据储存至数据库,包括:
将清洗后的数据封装成消息体,将所述消息体写入消息队列中;判断所述数据库中是否包含所述消息体的标识信息;
若已包含,则用所述消息体更新所述数据库中具有该标识信息的消息体;并向所述索引管理模块的消息队列写入修改消息;
若不包含,则将所述消息体的标识信息和所述消息体对应存储至数据库,并向所述索引管理模块的消息队列写入新增消息。
可选的,基于所获得的修改消息修改最低级别的索引库中的索引,包括:将所获得的修改消息封装成修改请求;用所述修改请求调用索引引擎的接口,以使索引引擎按照所述修改请求修改最低级别的索引库中的索引;
基于所获得的新增消息在最低级别的索引库中新增索引,包括:将所获得的新增消息封装成新增请求;用所述新增请求调用索引引擎的接口,以使索引引擎按照所述新增请求新增最低级别的索引库中的索引。
可选的,对所接收的搜索请求进行解析,得到语义,包括:
判断所述搜索请求是否包含操作符;
若包含操作符,则提取所述搜索请求中的关键词和操作符;将所提取的关键词和操作符分别写入关键词队列和操作符队列;依次从操作符队列、关键词队列中分别读取操作符和关键词,按照操作符和关键词的读取顺序构建语义;
若不包含操作符,则直接提取所述搜索请求中的关键词作为语义。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种分布式数据搜索系统,其特征在于,所述系统包括数据采集模块、索引管理模块和搜索模块,其中,
所述数据采集模块,用于采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;所述数据采集模块将清洗后的数据储存至数据库,具体为:
将清洗后的数据封装成消息体,将所述消息体写入消息队列中;判断所述数据库中是否包含所述消息体的标识信息;
若已包含,则用所述消息体更新所述数据库中具有该标识信息的消息体;并向所述索引管理模块的消息队列写入修改消息;
若不包含,则将所述消息体的标识信息和所述消息体对应存储至数据库,并向所述索引管理模块的消息队列写入新增消息;
所述索引管理模块,用于针对所述数据库构建索引库;所构建的索引库为多个不同等级的索引库,索引管理模块针对所述数据库构建索引库,具体为:
在获得数据库的修改消息后,基于所获得的修改消息修改最低级别的索引库中的索引;在获得数据库的新增消息后,基于所获得的新增消息在最低级别的索引库中新增索引;
针对每一等级的索引库,按照该等级的预设时间间隔,发送该等级的索引库中的索引至高一等级的索引库,在发送至高一等级的索引库后,清除该等级的索引库中的索引;在高一等级的索引库中将其自身索引与该等级的索引库的索引合并;
所述搜索模块,用于获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括评分排序模块,
所述排序模块,用于计算所述语义与所述搜索结果之间的相关度,并按照相关度大小,对所述搜索结果进行排序。
3.根据权利要求1所述的系统,其特征在于,所述索引管理模块基于所获得的修改消息修改最低级别的索引库中的索引,具体为:将所获得的修改消息封装成修改请求;用所述修改请求调用索引引擎的接口,以使索引引擎按照所述修改请求修改最低级别的索引库中的索引;
所述索引管理模块基于所获得的新增消息在最低级别的索引库中新增索引,具体为:将所获得的新增消息封装成新增请求;用所述新增请求调用索引引擎的接口,以使索引引擎按照所述新增请求新增最低级别的索引库中的索引。
4.根据权利要求1所述的系统,其特征在于,数据采集模块、索引管理模块和搜索模块均以集群的方式构建。
5.根据权利要求1所述的系统,其特征在于,所述搜索模块对所接收的搜索请求进行解析,得到语义,具体为:
判断所述搜索请求是否包含操作符;
若包含操作符,则提取所述搜索请求中的关键词和操作符;将所提取的关键词和操作符分别写入关键词队列和操作符队列;依次从操作符队列、关键词队列中分别读取操作符和关键词,按照操作符和关键词的读取顺序构建语义;
若不包含操作符,则直接提取所述搜索请求中的关键词作为语义。
6.根据权利要求1所述的系统,其特征在于,所述搜索模块根据语义查找索引库,得到目标索引,具体为:
若语义包含操作符,则基于操作符的预设逻辑对语义中的关键词确定查询条件;将索引库中满足所述查询条件的索引作为目标索引;
若语义不包含操作符,则将索引库中包含语义中关键词的索引作为目标索引。
7.根据权利要求1所述的系统,其特征在于,所述系统还包括缓存模块,所述搜索模块还用于:
检测到用户输入的字符后,用拼音识别算法识别用所检测到的字符,得到识别结果;用识别结果查找所述缓存模块,得到包含识别结果的关键词,作为提示词;显示提示词。
8.一种分布式数据搜索方法,其特征在于,应用于权利要求1所述的分布式数据搜索系统,所述方法包括:
采集各类数据;对所采集的各类数据进行清洗,将清洗后的数据存储至数据库;
针对所述数据库构建索引库;
获得搜索请求,对所获得的搜索请求进行解析,得到语义;根据语义查找索引库,得到目标索引;用目标索引搜索查找所述数据库,得到搜索结果。
CN201910430191.8A 2019-05-22 2019-05-22 一种分布式数据搜索系统及方法 Active CN110162522B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910430191.8A CN110162522B (zh) 2019-05-22 2019-05-22 一种分布式数据搜索系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910430191.8A CN110162522B (zh) 2019-05-22 2019-05-22 一种分布式数据搜索系统及方法

Publications (2)

Publication Number Publication Date
CN110162522A CN110162522A (zh) 2019-08-23
CN110162522B true CN110162522B (zh) 2023-04-07

Family

ID=67632070

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910430191.8A Active CN110162522B (zh) 2019-05-22 2019-05-22 一种分布式数据搜索系统及方法

Country Status (1)

Country Link
CN (1) CN110162522B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124299A (zh) * 2019-12-17 2020-05-08 网易传媒科技(北京)有限公司 数据存储管理方法、装置、设备、系统及存储介质
CN111125248A (zh) * 2019-12-18 2020-05-08 写逸网络科技(上海)有限公司 一种大数据存储解析查询系统
CN111627533B (zh) * 2020-04-17 2022-02-25 广州市科进计算机技术有限公司 一种全院不良事件主动监测管理系统及方法
CN111563200A (zh) * 2020-04-28 2020-08-21 广东电网有限责任公司东莞供电局 一种信息显示方法、装置、设备和介质
CN112069175B (zh) * 2020-08-25 2024-03-29 北京五八信息技术有限公司 数据查询的方法、装置及电子设备
CN112861022A (zh) * 2021-02-01 2021-05-28 杭州全拓科技有限公司 一种基于人工智能的人员活动大数据记录查询方法
CN116955286B (zh) * 2023-09-19 2023-12-15 中孚安全技术有限公司 一种文件搜索与分类管理方法、系统及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218373B (zh) * 2012-01-20 2018-02-06 深圳市世纪光速信息技术有限公司 一种相关搜索系统、方法及装置
CN104537101A (zh) * 2015-01-12 2015-04-22 杏树林信息技术(北京)有限公司 医学信息搜索引擎系统和搜索方法

Also Published As

Publication number Publication date
CN110162522A (zh) 2019-08-23

Similar Documents

Publication Publication Date Title
CN110162522B (zh) 一种分布式数据搜索系统及方法
CN109992645B (zh) 一种基于文本数据的资料管理系统及方法
US11663254B2 (en) System and engine for seeded clustering of news events
CN107491518B (zh) 一种搜索召回方法和装置、服务器、存储介质
CN103514183B (zh) 基于交互式文档聚类的信息检索方法及系统
EP2823410B1 (en) Entity augmentation service from latent relational data
Kalashnikov et al. Web people search via connection analysis
Ma et al. Big graph search: challenges and techniques
CN102737021B (zh) 搜索引擎及其实现方法
CN113407785B (zh) 一种基于分布式储存系统的数据处理方法和系统
CN113297457B (zh) 一种高精准性的信息资源智能推送系统及推送方法
CA2956627A1 (en) System and engine for seeded clustering of news events
CN111475725A (zh) 用于搜索内容的方法、装置、设备和计算机可读存储介质
Nuray-Turan et al. Exploiting web querying for web people search
Sekhar et al. Optimized focused web crawler with natural language processing based relevance measure in bioinformatics web sources
Gasparetti et al. Exploiting web browsing activities for user needs identification
CN112487161A (zh) 一种面向企业需求的专家推荐方法、装置、介质及设备
WO2015084757A1 (en) Systems and methods for processing data stored in a database
Dong et al. Using hybrid algorithmic-crowdsourcing methods for academic knowledge acquisition
Boddu et al. Knowledge discovery and retrieval on World Wide Web using web structure mining
CN107169065B (zh) 一种特定内容的去除方法和装置
CN116361428A (zh) 一种问答召回方法、装置和存储介质
CN111782958A (zh) 推荐词确定方法、装置、电子装置及存储介质
Gong et al. VB-PTC: Visual Block Multi-Record Text Extraction Based on Sensor Network Page Type Conversion
Singh et al. User specific context construction for personalized multimedia retrieval

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