[发明专利]一种复杂数据匹配方法及介质有效

专利信息
申请号: 201911253731.6 申请日: 2019-12-09
公开(公告)号: CN111176656B 公开(公告)日: 2022-12-30
发明(设计)人: 葛振宇;王刚 申请(专利权)人: 苏宁云计算有限公司
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 南京理工大学专利中心 32203 代理人: 马鲁晋;岑丹
地址: 210000 江苏省南*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 复杂 数据 匹配 方法 介质
【说明书】:

发明公开了一种复杂数据匹配方法及介质,该方法包括将语法规则解析成语法树;将语法树进行缓存;将待匹配数据传入语法树进行匹配得到匹配结果。本发明利用多叉树结构解耦复杂数据之间的耦合关系,使得程序不需要一次处理所有业务逻辑,而只需要关注当前访问数据节点逻辑,将复杂的逻辑转变为多个简单逻辑的组合,从而极大的降低了业务复杂度。

技术领域

本发明属于语法解析技术,具体为一种复杂数据匹配方法及介质。

背景技术

目前,针对复杂数据进行匹配的方法包括基于业务数据的向定制开发、利用基于Java语言的软件开发工具包的Java script计算引擎、利用Drools、URule 开源的决策引擎、利用EL表达式引擎完成数据匹配,上述方法各具特色,但仍存在一定的问题:

1、基于业务数据的向定制开发:

在数据结构简单、类型单一、稳定性高的业务场景下比较适合,但是对于当前项目数据结构复杂多变,数据量庞大的场景下,该方案无法满足场景要求的可扩展性、可维护性以及执行效率;

2、基于Java语言的软件开发工具包的Java script计算引擎:

Java script计算引擎是Java软件开发工具包自带的计算引擎,支持Java script的语法规则,学习、开发门槛低;但经过亿万级别的数据测试,发现其性能只有 Java的二分之一到三分之一之间,而且Java script语法对没有相关技术背景的业务方来说非常不友好;

3、Drools、URule开源的决策引擎:

Drools和URule是比较优秀开源的业务决策引擎,对复杂的业务场景可以扩展出丰富的策略规则;但是对两种框架做性能测试时发现性能在千万、亿万级数据性能比较低下,并且规则更倾向于业务规则,对业务方同样不友好;

4、FEL表达式引擎:

FEL表达式引擎是轻量高效的表达式计算引擎,并且在大数据量的测试中也有不错的表现;但是FEL表达式引擎支持表达式有限,并且扩展功能也不太适合当前的业务场景。

发明内容

本发明的目的在于提出了一种复杂数据匹配方法。

实现本发明目的的技术解决方案为:一种复杂数据匹配方法,具体步骤为:

将语法规则解析成语法树;

将语法树进行缓存;

将待匹配数据传入语法树进行匹配得到匹配结果。

优选地,所述语法规则为数据匹配规则。

优选地,将语法规则解析成语法树的具体方法为:

将语法规则表达式转换成字符数组;

依次递归解析字符数组并生成对应类型节点,直至叶子节点,当解析完成所有的叶子节点,结束语法树的解析过程。

优选地,解析字符数组的具体方法为:

从左向右解析字符数组,将字符与定义的不同类型字符标签进行匹配,如果匹配上,则分配该语法规则至该类型字符标签对应的自定义语法解析类生成对应语法类型节点。

优选地,所述语法类型节点包括分支类型节点、逻辑类型节点、关系类型节点、数学表达式类型节点。

优选地,所述语法类型节点预先设定为语法树的叉或节点。

优选地,所述叶子节点包括定义的不可在划分的操作符、参数编号、数学表达式节点。

优选地,将语法树进行缓存的具体方法为:

获取语法树;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏宁云计算有限公司,未经苏宁云计算有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201911253731.6/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top