本发明涉及数据库检索技术领域,特别是一种基于golang中间件协程模式下的高并发分布式数据检索方法,用于公安数据库资源同步的构建。



背景技术:

近年来随着经济、科技的快速发展,公安行业的信息化建设也快速发展,但也伴随着数据质量不高、处理能力不强、标准规范不足、共享应用不够、专业应用不深等问题。如何借助科技力量,来应对数据资源海量化、异构化及应用需求多样化、复杂化等带来的挑战,是信息化建设的关键。但目前全文检索产品存在各家厂商各自为政的现状,各家厂商均采用不同的技术实现方案。没有统一的技术思路,出现了数据抽取、对外的接口方案效率不高的问题,以及接口不通用、后期维护不及时等情况。基于上述问题,申请人对现有市场主流全文检索产品进行了比较和分析,目前市场大多数的全文检索产品及其所用技术存在以下问题:

1.检索功能方面:1)词命中率不高,范畴检索功能有限;2)缺少截词检索功能;3)采取信息的速度远远比不上网络资源的增长速度。

2.数据清洗、数据治理方面:1)数据抽取混乱;2)数据源较为单一,数据入库的方式复杂缓慢,不够通用;3)缺乏统一的技术思路,在对外接口方案存在效率不高、接口不通用的情况。

3.其他方面:1)兼容性不足,只面向互联网周边形态的产品;2)产品对技术性操作要求强,操作繁琐,不能提供很好的适应多样性的应用场景;3)后期维护不及时,数据更新不及时、数据流程日志缺乏性能的调优需要对硬件的要求高。



技术实现要素:

本发明需要解决的技术问题是提供了一种基于golang中间件协程模式下的高并发分布式数据检索方法,设计开发一套简单易用的web配置页面,以解决抽取数源单一、交互界面设计复杂、数据入库方式复杂缓慢、数据存储难度大的问题,以有效提高数据采集效率以及数据应用效能,以保证后期能够及时维护,为加强执法规范、提升执法效率准备条件。

为解决上述技术问题,本发明所采取的技术方案如下。

基于golang中间件协程模式下的高并发分布式数据检索方法,包括以下具体步骤:

a.根据所提供的用户交互页面,依照页面的操作向导,上传需要采集的数据信息,然后上传数据采集的配置信息;

b.对步骤a上传的数据信息进行预处理,形成对应的数据结构规则,将elasticsearch的索引、类型和类型结构进行自动添加;

c.对步骤b进行的采集数据环境整理后,按照设计好的采集数据配置,在配置定时器页面为采集数据配置添加一个定时采集任务;

d.将步骤c中配置好定时任务数据,系统自动调度通过golang中间件执行数据采集任务,把数据存储到elasticsearch库中;

e.在数据进入elasticsearch库时,通过elasticsearch的分词、语义分析技术从采集的数据中进行分词及语义分析,得到最终入库的数据集;

f.利用接口配置页面,把数据集开放给终端的用户使用。

进一步优化技术方案,所述数据信息包括文本数据和文本数据配置信息。

进一步优化技术方案,所述数据信息包括配置数据库连接信息和表信息。

进一步优化技术方案,所述步骤b中,特征规则作为页面渲染、数据整理、数据存储的依据。

进一步优化技术方案,所述步骤b中,将elasticsearch的索引、类型和类型结构进行自动添加是通过结合系统后台自动化程序添加文本目录或添加数据库和表,依据一组配置好的数据结构映射进行。

进一步优化技术方案,所述步骤c中,通过结合自动化与人工输入配置的方式完成对采集数据环境的整理。

进一步优化技术方案,所述步骤d包括以下具体步骤:

d1.把要入库的数据通过golang代码落地到服务器本地文件里,并在程序内保存输入源与输出源的映射关系,保存相关日志;

d2.把落地文件与elasticsearch映射的索引里的数据比对,过滤掉非法的数据,筛选出需要入库的数据保存到内存里;

d3.把过滤后的数据通过高并发多协程导入elasticsearch映射的索引里。

进一步优化技术方案,所述步骤d2中,数据比对是主要采用knn算法将数据分类、筛选出来。

进一步优化技术方案,所述步骤e中,分词、语义分析技术主要使用jieba分词器通过以下算法实现分词:

e1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图;

e2.采用了动态规划查找最大概率路径,找出基于词频的最大切分组合;

e3.对于未登录词,采用基于汉字成词能力的hmm模型,使用viterbi算法,通过大数真实数据,将拼音转汉字以及将字符进行分词。

由于采用了以上技术方案,本发明所取得技术进步如下。

本发明通过采用可视化的方式实现对各类数据导入数据库,形成对应的规则,定义的规则可以作为页面渲染、数据整理、数据存储的依据,这种包含配置化方式的采集方法,使得业务人员在不需要开发人员参与的情况下,即可通过所提供的配置功能,完成横向扩展,以满足多类型数据源的采集需求,同时,能一定程度上减少开发人员的工作量,降低代码的耦合度。本发明有效地解决抽取数源单一、交互界面设计复杂、数据入库方式复杂缓慢、数据存储难度大的问题,有效提高了数据采集效率以及数据应用效能,保证了后期能够及时维护,为加强执法规范、提升执法效率准备条件。

本发明结合配置化设计与关系型数据库应用,实现对各类异构数据源数据的采集,保证所述采集方法健壮性、强壮性。

本发明引入了golang协程高并发技术,一定程度上加快了采集数据整理数据过程,提高采集效率,同时采用自动去除重复数据的技术,提高数据利用率。

本发明采用分词技术与语义分析技术,对提取出的文本信息进行深度分析,以提取出数据价值更高的要素信息,为后续更多上层应用的实现,提供数据支撑,充分发挥数据效能,还可为采集方法的自动化数据整理以及人工数据整理提供辅助。

附图说明

图1为本发明的总体流程图。

具体实施方式

下面将结合附图和具体实施例对本发明进行进一步详细说明。

一种基于golang中间件协程模式下的高并发分布式数据检索方法,结合golang的特性进行功能开发,能够发挥golang语言的高并发,多协程长处,进行数据的处理及es的导入,能够实现对全文的检索。高并发是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求;执行协程只需2kb的内存,可同时运行成千上万个并发任务,占用的内存少。可实现处理数据每秒能处理4万条以上,大规则的集群处理,每秒能达10万条以上。

基于golang中间件协程模式下的高并发分布式数据检索方法,结合图1所示,包括以下具体步骤:

a.根据所提供的用户交互页面,依照页面的操作向导,上传需要采集的数据信息,然后上传数据采集的配置信息。数据信息包括文本数据和文本数据配置信息,或数据信息包括配置数据库连接信息和表信息。

b.对步骤a上传的数据信息进行预处理,形成对应的数据结构规则,将elasticsearch的索引、类型和类型结构进行自动添加。数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

将elasticsearch的索引、类型和类型结构进行自动添加是通过结合系统后台自动化程序添加文本目录或添加数据库和表,依据一组配置好的数据结构映射进行。此步骤中数据库类型:oracle\mysql\postgresql。

c.对步骤b通过结合自动化与人工输入配置的方式完成对采集数据环境的整理后,按照设计好的采集数据配置,在配置定时器页面为采集数据配置添加一个定时采集任务。

自动化是指系统自动建数据结构,自动同步数据。人工输入配置是指人工配置数据源、数据调度。

d.将步骤c中配置好定时任务数据,系统自动调度通过golang中间件执行数据采集任务,把数据存储并入到elasticsearch库中。

步骤d包括以下具体步骤:

d1.把要入库的数据通过golang代码落地到服务器本地文件里,并在程序内保存输入源与输出源的映射关系,保存相关日志。

d2.把落地文件与elasticsearch映射的索引里的数据比对,过滤掉非法的数据,筛选出需要入库的数据保存到内存里。

非法数据,是指格式不正常,数据值超出设定的正常范围的数据。

数据比对是指在golong中间件协程中查询数据库数据集与elasticsearch数据集通过配置好关键字进行比对,主要采用knn算法实现,对重复的数据自动化去重整理。

knn算法是一种基本分类与回归方法,其法则是相同类别的样本之间在特征空间中聚集,用此算法能将数据分类、筛选出来。

d3.把过滤后的数据通过高并发多协程导入elasticsearch映射的索引里。

e.在数据进入elasticsearch库时,通过elasticsearch的分词、语义分析技术从采集的数据中进行分词及语义分析,从采集的数据中提取有更有价值的信息,提高搜索命中率及搜索速度。得到最终入库的数据集。

分词、语义分析技术主要使用jieba分词器通过以下算法实现分词:

e1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(dag)。

e2.采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。

e3.对于未登录词,为了把拼音转汉字和把字符分词,采用hmm模型,使用viterbi算法,通过大数真实数据,用以上算法计算出最优结果,算法原理如下:

随机过程中各个状态st的概率分布,只与它的前一个状态st-1有关,即p(st|s1,s2,s3,…,st-1)=p(st|st-1)。

维特比算法的步骤概括成下面三点:

如果概率最大的路径p(或者说最短路径)经过某个点,比如途中的x22,那么这条路径上的起始点s到x22的这段子路径q,一定是s到x22之间的最短路径。否则,用s到x22的最短路径r替代q,便构成一条比p更短的路径,这显然是矛盾的。证明了满足最优性原理。

从s到e的路径必定经过第i个时刻的某个状态,假定第i个时刻有k个状态,那么如果记录了从s到第i个状态的所有k个节点的最短路径,最终的最短路径必经过其中一条,这样,在任意时刻,只要考虑非常有限的最短路即可。

结合以上两点,假定当我们从状态i进入状态i+1时,从s到状态i上各个节的最短路径已经找到,并且记录在这些节点上,那么在计算从起点s到第i+1状态的某个节点xi+1的最短路径时,只要考虑从s到前一个状态i所有的k个节点的最短路径,以及从这个节点到xi+1,j的距离即可。

f.利用接口配置页面,可以把数据集开放给终端的用户使用。

本发明引入了golang协程高并发技术,一定程度上加快了采集数据整理数据过程,提高采集效率,同时采用自动去除重复数据的技术,提高数据利用率。

本发明采用分词技术与语义分析技术,对提取出的文本信息进行深度分析,以提取出数据价值更高的要素信息,为后续更多上层应用的实现,提供数据支撑,充分发挥数据效能,还可为采集方法的自动化数据整理以及人工数据整理提供辅助。