CN116738252B - 基于模糊匹配的配置加载方法、装置及应用 - Google Patents
基于模糊匹配的配置加载方法、装置及应用 Download PDFInfo
- Publication number
- CN116738252B CN116738252B CN202310849069.0A CN202310849069A CN116738252B CN 116738252 B CN116738252 B CN 116738252B CN 202310849069 A CN202310849069 A CN 202310849069A CN 116738252 B CN116738252 B CN 116738252B
- Authority
- CN
- China
- Prior art keywords
- key
- key name
- simplified
- keys
- configuration
- 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
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 21
- 230000014509 gene expression Effects 0.000 claims description 20
- 238000013461 design Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 3
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 2
- 238000004080 punching Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于模糊匹配的配置加载方法、装置及应用,涉及计算机配置技术领域。所述方法包括:对于目标应用程序,获取待配置参数的键名链信息;解析待配置参数的键名链以得到各级键名域信息,根据各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项;根据匹配项,基于目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值;其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,键值对的键为支持模糊匹配的键名链。本发明使用模糊匹配的键,同时将相似键按照值尽可能模糊归纳,使得相同配置效果的配置项可以更少更简化。
Description
技术领域
本发明涉及计算机配置技术领域,尤其涉及一种基于模糊匹配的配置加载方法、装置及应用。
背景技术
配置文件是工程中常用的初始化参数的配置方式,而配置文件的格式有很多种,不同的操作系统、编程语言通常会有不同的配置文件的格式,作为举例,比如:Windows较早的开发选择使用int格式的配置文件;java则选择使用properties格式的配置文件,properties属于文本文件类型,文件的内容是“键=值”的格式,可以用“#”作为注释;而一些通用的编程语言则选择使用轻量级的数据交换格式json(javascript object notation)格式的配置文件,json属于JS对象简谱,是基于欧洲计算机协会制定的JS规范ECMAScript的一个子集,其采用完全独立于编程语言的文本格式来存储和表示数据,数据在键值对中,格式为“key”:“value”,不支持注释。考虑到人工阅读和编辑的友好性,现有技术还提供了hocon(human-optimized config object notation,人性化配置对象表示法)格式的配置文件。hocon是json和properties的一个超集,旨在保证json格式的语义的同时使配置文件的阅读和编辑更方便。不同的配置文件格式有不同的用户友好性,对于功能的支持也有简单和复杂之分,选择配置文件格式时也通常会从多个方面去考量。但总体来说,配置文件格式没有数据库文件格式(如 SQLite)、文档文件格式、编程语言文件格式的需求那么复杂,满足严谨(而不严苛)、支持必要的数据类型和嵌套、最好便于阅读和手动编辑等需求即可。
随着一个系统功能模块增加,配置文件的内容也越来越多,配置项信息越来越复杂,出现了大量相似键值,如何减少相似且臃肿的配置项信息也是本领域技术人员在选择配置文件格式不能忽略的问题。据此,基于简化配置文件的配置项的角度,现有技术针对运用广泛的配置文件格式json、properties提出了一些改进格式,比如当前较受欢迎的yaml、toml格式。其中,yaml(yet another markup language)是一种数据序列化语言,其将 json中的括号结构去掉了,只保留缩进,数据在键值对中,使用冒号和空格来标记每个键值对,参见图1所示。yaml格式的数据更为简洁,其将链式键通过格式缩进可以减少重复配置(module3)。而toml(tom’s obvious,minimal language)则彻底放弃了括号或缩进的底层原理,选择了显式键名链的方式,不使用空格或者缩进,使得使用者更容易编辑;toml旨在成为一个语义明显且易于阅读的最小化配置文件格式,被设计成可以无歧义地映射为哈希表,能很容易地被解析成各种语言中的数据结构。toml的语法广泛地由键值对key = "value"、[节名]与#注释构成,它支持的数据类型包括字符串、整形、浮点型、布尔型、日期时间、数组和图表。参见图1所示的配置项示例可以看出上述四种配置文件格式各自的特点。
然而,上述配置文件格式中的数据键值对基本都是采用唯一哈希键(hash key)的处理方式(一个键对应一个值),考虑到当前系统中普遍采用配置数据集中管理的方式——相似功能的配置数据大都集中在一起,随着功能模块越来越多,配置数据越来越多,配置文件可预见性的臃肿、维护繁琐。作为举例,比如,工程师在修改不同模块中相同的键的值时,可能需要在各个模块中分别修改很多处,占用了工程师大量的时间,且容易出错。
综上所述,针对配置文件——尤其是包含大量相近似配置数据的配置文件,在加载配置时,如何在保证配置内容不变的情况下尽可能简化配置文件数据,是当前亟需解决的技术问题。
发明内容
本发明的目的在于:克服现有技术的不足,提供一种基于模糊匹配的配置加载方法、装置及应用。本发明使用模糊匹配的键,同时将相似键按照值尽可能模糊归纳,有效减少了臃肿配置,使得相同配置效果的配置数据更为简化,尤其的适用于具有大量相近似配置的配置文件的配置处理。
为实现上述目标,本发明提供了如下技术方案:
一种基于模糊匹配的配置加载方法,包括步骤:
对于需要加载配置的目标应用程序,获取待配置参数的键名链信息;
解析前述待配置参数的键名链以得到所述键名链的各级键名域信息,根据前述各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项;
根据前述匹配项,基于前述目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值;其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,所述配置文件的基本构成区块为键值对,所述键值对包括键和值,所述键值对的键为支持模糊匹配的键名链。
进一步,进行配置数据简化时,按照键值对的键和值对配置文件进行简化,包括步骤:
获取目标应用程序的原始配置文件;
对原始配置文件中的键值对进行分析,得到用于配置相近似属性的多个键值对,所述相近似属性通过键值对的相似键体现;
对于前述多个键值对,根据相似键的键名链规则对相似键进行归纳以得到支持模糊匹配的简化键;其中,根据多个相似键的键名链字符串的相似性,使用正则表达式来替换键名链字符串中符合一定规则的字符串内容后,得到支撑模糊匹配的简化键,所述简化键允许使用预设的模糊匹配符号和正则表达式,能够匹配前述多个相似键;
根据前述简化键,将前述多个键值对按照键值对的值进行整合后形成简化键值对;其中,将对应同一个值的多个键值对进行整合以形成一个简化键值对,所述简化键值对的键为前述简化键。
进一步,对于用于配置相近似属性的多个键值对,根据多个相似键的键名链字符串的设计规则能够得到一个或多个简化键,不同的简化键对应不同的键名链。
进一步,所述简化键支持多级键名链,所述多级键名链包括多个要素,多个要素之间通过分隔符相连,每个要素对应一级键名域。
进一步,所述分隔符为点符号“.”或者逗号“,”;所述模糊匹配符号为星型符号“*”或井字号“#”。
进一步,所述打分机包括索引库建立模块,用于根据简化键值对的简化配置信息建立索引库;
所述索引库建立模块被配置为:获取前述简化键值对的简化键和值信息;解析简化键的键名链以得到各级键名域信息,根据各级键名域的规则,建立以第一级键名域为根节点的树状数据结构,其他级键名域在对应的第一级键名域的根节点下基于各自的级别分别形成树状数据结构的子节点,多个第一级键名域对应多个树状数据结构,多个树状数据结构形成配置索引库;检索时,根据输入数据的各级键名域信息,自前述树状数据结构的根节点开始在配置索引库中进行遍历检索。
进一步,所述打分机包括打分模式采集模块和打分模块;
所述打分模式采集模块,用以获取系统或用户针对键名链的各级键名域的匹配设置的打分模式;
所述打分模块被配置为:接收需要返回值的键名链信息,根据键名链的各级键名域信息在前述配置索引库中进行检索;当键名链具有完全匹配项时,将所述完全匹配项作为作为前述键名链的匹配结果;当键名链没有完全匹配项时,按照前述键名链的各级键名域在前述配置索引库中逐级检索以得到与前述键名链匹配的模糊匹配项,基于前述设置的打分模式对前述模糊匹配项进行打分,获取得分最高的模糊匹配项作为前述键名链的匹配结果。
进一步,所述打分模式至少包括第一打分模式和第二打分模式;
在所述第一打分模式下,根据键名域的级别,级别越高的键名域的得分越高;
在所述第二打分模式下,根据键名域的级别,级别越低的键名域得分越高。
本发明还提供了一种基于模糊匹配的配置加载装置,包括如下结构:
信息采集单元,用于根据需要加载配置的目标应用程序,获取待配置参数的键名链信息;
匹配打分单元,用于解析前述待配置参数的键名链以得到所述键名链的各级键名域信息,根据前述各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项;
参数值返回单元:用于根据前述匹配项,基于前述目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值;其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,所述配置文件的基本构成区块为键值对,所述键值对包括键和值,所述键值对的键为支持模糊匹配的键名链。
本发明还提供了一种配置文件的配置简化方法,其按照键值对的键和值对配置文件进行简化,包括步骤:
获取目标应用程序的原始配置文件;
对原始配置文件中的键值对进行分析,得到用于配置相近似属性的多个键值对,所述相近似属性通过键值对的相似键体现;
对于前述多个键值对,根据相似键的键名链规则对相似键进行归纳以得到支持模糊匹配的简化键;其中,根据多个相似键的键名链字符串的相似性,使用正则表达式来替换键名链字符串中符合一定规则的字符串内容后,得到支撑模糊匹配的简化键,所述简化键允许使用预设的模糊匹配符号和正则表达式,能够匹配前述多个相似键;
根据前述简化键,将前述多个键值对按照键值对的值进行整合后形成简化键值对;其中,将对应同一个值的多个键值对进行整合以形成一个简化键值对,所述简化键值对的键为前述简化键。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:本发明使用模糊匹配的键,同时将相似键按照值尽可能模糊归纳,有效减少了臃肿配置,使得相同配置效果的配置数据更为简化,尤其的适用于具有大量相近似配置的配置文件的配置处理。
另一方面,本发明提供的配置简化方案,因为配置文件的配置支持模糊匹配,还提高了配置文件中配置的可复用性和可扩展性。作为举例,比如,应用程序新增一个相同/相似的模块时,由于配置的数据结构的相同/相似性,模糊匹配的键也可能支持前述新增配置,如此,可以显著减小需要修改的配置。
附图说明
图1为现有技术提供的properties、yaml、json、toml格式的配置文件的内容示例图。
图2为本发明实施例提供的配置索引库的树状数据结构的示意图。
图3为本发明实施例提供的键名链匹配的流程示意图。
图4为本发明实施例提供的打分机的打分流程示意图。
图5为本发明实施例提供的配置文件与yaml、toml格式的配置文件的配置数据比对图。
实施方式
以下结合附图和具体实施例对本发明公开的基于模糊匹配的配置加载方法、装置及应用作进一步详细说明。需要说明的是,对于相关领域普通技术人员已知的技术(包括方法和装置)可能不作详细讨论,但在适当情况下,上述已知的技术被视为说明书的一部分。同时,示例性实施例的其它示例可以具有不同的值。本说明书附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件。
在本申请实施例的描述中,“/”表示或的意思,“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,比如,“甲和/或乙”表示:单独存在甲乙,单独存在乙,同时存在甲和乙这三种情况。在本申请实施例的描述中,“多个”是指两个及以上。
术语解释:
1)properties:以键值对key-value存储的配置文件格式。properties属于文本文件类型,支持注释功能,用“#”作为注释。
2)json:全称javascript object notation,也称JS对象简谱,是一种轻量级的数据交换格式。json基于 ECMAScript(European Computer Manufacturers Association,欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
3)yaml:全称yet another markup language,yaml是一个可读性高、主要用来表达数据序列化的格式。yaml参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。
4)toml:全称tom’s obvious,minimal language,toml放弃了括号或缩进的底层原理,选择了显式键名链的方式,不使用空格或者缩进,使得使用者更容易编辑。toml旨在成为一个语义明显且易于阅读的最小化配置文件格式,被设计成可以无歧义地映射为哈希表,能很容易地被解析成各种语言中的数据结构。toml的语法广泛地由键值对key = "value"、[节名]与#注释构成,它支持的数据类型包括字符串、整形、浮点型、布尔型、日期时间、数组和图表。
5)正则表达式(regular expression):又称规则表达式,在代码中常简写为regex、regexp或RE。正则表达式是一种文本模式,可以包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。正则表达式可以使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的内容。
以下,根据示例性应用场景对本发明的技术构思和方案进行介绍。
实施例
本发明针对现有配置格式中常用的唯一哈希键(hash key)的配置处理方式进行改进,根据相似功能配置的相近似特性,结合正则表达式,提出了利用正则表达式规则regex rule的regrule配置方式,所述regrule配置是基于打分机制实现模糊匹配,利用模糊匹配的键(key)的配置处理方式,将多个相似键(key)按照值(value)尽可能进行模糊归纳,从而达到减少臃肿配置的目的。同时,提供了regule打分机以用于加载前述regule配置,然后根据输入的明确的键名链获取该键名链的匹配结果后,根据匹配结果得到该键名链对应的值。如此,能够在保证配置实际内容不变的情况下,减少臃肿配置数据,实现配置简化。
具体的,本实施例提供了一种基于模糊匹配的配置加载方法。所述方法包括如下步骤:
S100,对于需要加载配置的目标应用程序,获取待配置参数的键名链信息。
S200,解析前述待配置参数的键名链以得到所述键名链的各级键名域信息,根据前述各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项。
S300,根据前述匹配项,基于前述目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值。其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,所述配置文件的基本构成区块为键值对,所述键值对包括键和值,所述键值对的键为支持模糊匹配的键名链。
本实施例中,在进行配置数据简化时,是按照键值对的键和值对配置文件进行简化,具体可以包括如下步骤:
S11,获取目标应用程序的原始配置文件。具体的,可以基于预设的配置文件存储路径获取前述目标应用程序的原始配置文件。
S12,对原始配置文件中的键值对进行分析,得到用于配置相近似属性的多个键值对,所述相近似属性通过键值对的相似键体现。也就是说,配置相近似属性的多个键值对,表现在它们具有相似的键。作为举例,比如图1中配置项“SERVER1.FXSPOT.RATE=value1”、“SERVER2.FXSPOT.RATE=value1”、“SERVER3.FXSWAP.RATE=value1”、“SERVER3.FXSPOT.RATE=value1”等键值对就属于用于配置相近似属性的多个键值对,这些键值对的键就属于相似键。
S13,对于前述多个键值对,根据相似键的键名链规则对相似键进行归纳以得到支持模糊匹配的简化键。其中,根据多个相似键的键名链字符串的相似性,使用正则表达式来替换键名链字符串中符合一定规则——比如符合某一句法规则——的字符串内容后,得到支撑模糊匹配的简化键,所述简化键允许使用预设的模糊匹配符号和正则表达式,能够匹配前述多个相似键。
S14,根据前述简化键,将前述多个键值对按照键值对的值进行整合后形成简化键值对。其中,将对应同一个值的多个键值对进行整合以形成一个简化键值对,所述简化键值对的键为前述简化键。
其中,对于用于配置相近似属性的多个键值对,根据多个相似键的键名链字符串的设计规则,可以得到一个或多个简化键,不同的简化键对应不同的键名链。
本实施例中,所述简化键支持多级键名链,所述多级键名链包括多个要素,多个要素之间通过分隔符相连,每个要素对应一级键名域。
优选的,所述分隔符可以采用为点符号“.”或者逗号“,”。所述模糊匹配符号则可以采用星型符号“*”或井字号“#”。
作为举例而非限制,以3级键名链的使用场景为例,比如根据系统或用户设置的键名链规则,所述键名链为可以包含服务server、 属性symbol、字段field三个要素,采用英文点符号“.”作为分隔符,即,对应的键名链结构为server.symbol.field。其中,server为1级键名域,symbol为2级键名域,field为3级键名域。
对于某个应用程序,其原始配置文件中的配置(原配置)如下:
# value0是默认的RATE
SERVER0.SPOT.RATE = value0
SERVER0.FWD.RATE = value0
SERVER0.SWAP.RATE = value0
# value1是2级键名链为FX开头使用的
SERVER2.FXSPOT.RATE = value1
SERVER3.FXSWAP.RATE = value1
SERVER4.FXFWD.RATE = value1
SERVER5.FXSPOT.RATE = value1
SERVER6.FXSPOT.RATE = value1
# value2只有以下键名链使用
SERVER1.FXSPOT.RATE = value2
上述原配置中,#表示注释内容,配置的基本构成区块为键值对,数据在键值对“键=值”中。
按照键值对的键和值进行简化后,配置文件中的配置(regule配置)如下:
*.*.RATE = value0
*.FX*.RATE = value1
SERVER1.FXSPOT.RATE = value2
可以看出,上述regule配置中,键值对“*.*.RATE = value0”和“*.FX*.RATE =value1”采用的是模糊匹配的键(即简化键)。其中,简化键“*.*.RATE”能够匹配原配置中的相似键SERVER0.SPOT.RATE,SERVER0.FWD.RATE和SERVER0.SWAP.RATE;简化键“*.FX*.RATE”则能够匹配原配置中的相似键SERVER2.FXSPOT.RATE,SERVER3.FXSWAP.RATE,SERVER4.FXFWD.RATE,SERVER5.FXSPOT.RATE和SERVER6.FXSPOT.RATE。
如此,就可以根据应用程序的原配置中的多个相似键的键名链字符串的规律,生成能够匹配多个相似键的模糊匹配的键(即简化键,简化键使用*模糊匹配及正则表达式进行模糊匹配),将对应同一个值的多个键值对进行整合形成一个简化键值对,从而实现了对臃肿配置的简化。
本实施例中,所述打分机为regule打分机。所述regule打分机具体可以包括索引库建立模块、打分模式采集模块和打分模块。
所述索引库建立模块,用于根据简化键值对的简化配置信息建立索引库。
具体的,所述索引库建立模块被配置为:获取前述简化键值对的简化键和值信息;解析简化键的键名链以得到各级键名域信息,根据各级键名域的规则,建立以第一级键名域为根节点的树状数据结构,其他级键名域在对应的第一级键名域的根节点下基于各自的级别分别形成树状数据结构的子节点,多个第一级键名域对应多个树状数据结构,多个树状数据结构形成配置索引库。
参见图2所示,示例了根据前述regule配置生成的配置索引库。所述配置索引库包括2个树状数据结构,其中,键值对*.*.RATE = value0和*.FX*.RATE = value1对应同一个树状数据结构(具有相同的根节点),键值对SERVER1.FXSPOT.RATE = value2对应另一个树状数据结构。
检索时,根据输入数据的各级键名域信息,自前述树状数据结构的根节点开始在配置索引库中进行遍历检索。
所述打分模式采集模块,用以获取系统或用户针对键名链的各级键名域的匹配设置的打分模式。
不同的打分模式对应的打分规则不同,可以根据实际需要对打分模式对应的打分规则进行适应性设置。优选的,所述打分模式至少包括第一打分模式和第二打分模式。在所述第一打分模式下,根据键名域的级别,级别越高的键名域的得分越高。在所述第二打分模式下,根据键名域的级别,级别越低的键名域得分越高。当然,根据需要,可以设置更多的打分模式,在此不做限制。
所述打分模块被配置为:接收需要返回值的键名链信息,根据键名链的各级键名域信息在前述配置索引库中进行检索;当键名链具有完全匹配项时,将所述完全匹配项作为作为前述键名链的匹配结果;当键名链没有完全匹配项时,按照前述键名链的各级键名域在前述配置索引库中逐级检索以得到与前述键名链匹配的模糊匹配项,基于前述设置的打分模式对前述模糊匹配项进行打分,获取得分最高的模糊匹配项作为前述键名链的匹配结果。匹配流程参见图3所示。
作为举例而非限制,比如系统的默认设置为采用第一打分模式,在所述第一打分模式下,级别越高的键名域得分越高。以键名链结构为server.symbol.field为例,包括三个键名域:1级键名域server、2级键名域symbol、3级键名域field;如果该1级键名域server、2级键名域symbol、3级键名域field有一个不匹配,不给分;如果星型符号*匹配得1分,如果星型符号*+部分匹配得2分,比如A*C匹配ABC;如果三个键名域server、symbol、field各自完全匹配则分别得3, 5, 11分;从第3级键名域开始,每级的完全匹配分数>此级最大模糊匹配分数,作为举例,比如,第3级的完全匹配分数为C,第3级的最大模糊匹配A.B.C*对应的分数为10(A.B.C* = 3 + 5 + 2 = 10),则 C > 10,可以令C=11。需要说明的是,上述针对匹配的分值作为举例而非限制,本领域技术人员在设置打分规则时可以根据需要对分值进行设置,只要打分规则与实际需求相适应,能够通过分值体现匹配程度即可。
下面以需要返回值的键名链为“SERVER2.FXSPOT.RATE”为例,结合图4详细描述利用上述打分机获取匹配项的过程。
参见图4所示,将键名链“SERVER2.FXSPOT.RATE”作为输入数据输入打分机,打分机根据键名链“SERVER2.FXSPOT.RATE”的3级键名域信息在配置索引库中进行检索,由于该键名链没有完全匹配项,因此需要按照前述键名链的1级键名域、2级键名域、3级键名域在前述配置索引库中逐级检索——参见图4中的第一级检索、第二级检索和第三级检索;经过三级检索后,得到了与前述键名链匹配“SERVER2.FXSPOT.RATE”的2个模糊匹配项,分别为“*. *.RATE”和“*.FX*.RATE”,基于打分模块对前述 2个模糊匹配项的各级键名域进行打分,所述模糊匹配项“*. *.RATE”的分值为1+1+11=13,所述模糊匹配项“*.FX*.RATE”的分值为1+2+11=14,因为模糊匹配项“*.FX*.RATE”的分值最高,因此将“*.FX*.RATE”作为键名链“SERVER2.FXSPOT.RATE”的最终匹配结果(匹配项),返回匹配结果“*.FX*.RATE”。
然后,就可以基于所述匹配项“*.FX*.RATE”在前述regule配置中获取该匹配项对应的值,即value1。
再比如,将键名链“SERVER1.FXSPOT.RATE”作为输入数据输入打分机,打分机根据键名链“SERVER1.FXSPOT.RATE”的3级键名域信息在配置索引库中进行检索,由于键名链“SERVER1.FXSPOT.RATE”具有完全匹配项“SERVER1.FXSPOT.RATE”时,将所述完全匹配项作为作为前述键名链的匹配结果(匹配项)。然后,就可以基于所述匹配项“SERVER1.FXSPOT.RATE”在前述regule配置中获取该匹配项对应的值,即value2。
本发明的另一实施例,还提供了一种基于模糊匹配的配置加载装置。
所述装置包括信息采集单元,匹配打分单元和参数值返回单元。
所述信息采集单元,用于根据需要加载配置的目标应用程序,获取待配置参数的键名链信息。
所述匹配打分单元,用于解析前述待配置参数的键名链以得到所述键名链的各级键名域信息,根据前述各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项。
所述参数值返回单元:用于根据前述匹配项,基于前述目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值。其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,所述配置文件的基本构成区块为键值对,所述键值对包括键和值,所述键值对的键为支持模糊匹配的键名链。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明的另一实施例,还提供了一种配置文件的配置简化方法。所述方法按照键值对的键和值对配置文件进行简化,可以包括如下步骤:获取目标应用程序的原始配置文件;对原始配置文件中的键值对进行分析,得到用于配置相近似属性的多个键值对,所述相近似属性通过键值对的相似键体现;对于前述多个键值对,根据相似键的键名链规则对相似键进行归纳以得到支持模糊匹配的简化键;其中,根据多个相似键的键名链字符串的相似性,使用正则表达式来替换键名链字符串中符合一定规则的字符串内容后,得到支撑模糊匹配的简化键,所述简化键允许使用预设的模糊匹配符号和正则表达式,能够匹配前述多个相似键;根据前述简化键,将前述多个键值对按照键值对的值进行整合后形成简化键值对;其中,将对应同一个值的多个键值对进行整合以形成一个简化键值对,所述简化键值对的键为前述简化键。
其它技术特征参见在前实施例的描述,在此不再赘述。
本发明还提供了一种计算机可读存储介质,用于存储能够被处理单元执行的计算机程序,所述计算机程序被所述处理单元执行时实现如前所述的方法。
所述存储介质,可以包括U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
其它技术特征参见在前实施例的描述,在此不再赘述。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (7)
1.一种基于模糊匹配的配置加载方法,其特征在于包括步骤:
对于需要加载配置的目标应用程序,获取待配置参数的键名链信息;
解析前述待配置参数的键名链以得到所述键名链的各级键名域信息,根据前述各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项;
根据前述匹配项,基于前述目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值;其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,所述配置文件的基本构成区块为键值对,所述键值对包括键和值,所述键值对的键为支持模糊匹配的键名链;
其中,进行配置数据简化时,按照键值对的键和值对配置文件进行简化,包括步骤:获取目标应用程序的原始配置文件;对原始配置文件中的键值对进行分析,得到用于配置相近似属性的多个键值对,所述相近似属性通过键值对的相似键体现;对于前述多个键值对,根据相似键的键名链规则对相似键进行归纳以得到支持模糊匹配的简化键;其中,根据多个相似键的键名链字符串的相似性,使用正则表达式来替换键名链字符串中符合一定规则的字符串内容后,得到支撑模糊匹配的简化键,所述简化键允许使用预设的模糊匹配符号和正则表达式,能够匹配前述多个相似键;根据前述简化键,将前述多个键值对按照键值对的值进行整合后形成简化键值对;其中,将对应同一个值的多个键值对进行整合以形成一个简化键值对,所述简化键值对的键为前述简化键;
所述打分机包括索引库建立模块、打分模式采集模块和打分模块;
所述索引库建立模块,用于根据简化键值对的简化配置信息建立索引库;所述索引库建立模块被配置为:获取前述简化键值对的简化键和值信息;解析简化键的键名链以得到各级键名域信息,根据各级键名域的规则,建立以第一级键名域为根节点的树状数据结构,其他级键名域在对应的第一级键名域的根节点下基于各自的级别分别形成树状数据结构的子节点,多个第一级键名域对应多个树状数据结构,多个树状数据结构形成配置索引库;检索时,根据输入数据的各级键名域信息,自前述树状数据结构的根节点开始在配置索引库中进行遍历检索;
所述打分模式采集模块,用以获取系统或用户针对键名链的各级键名域的匹配设置的打分模式;
所述打分模块被配置为:接收需要返回值的键名链信息,根据键名链的各级键名域信息在前述配置索引库中进行检索;当键名链具有完全匹配项时,将所述完全匹配项作为作为前述键名链的匹配结果;当键名链没有完全匹配项时,按照前述键名链的各级键名域在前述配置索引库中逐级检索以得到与前述键名链匹配的模糊匹配项,基于前述设置的打分模式对前述模糊匹配项进行打分,获取得分最高的模糊匹配项作为前述键名链的匹配结果。
2.根据权利要求1所述的方法,其特征在于:对于用于配置相近似属性的多个键值对,根据多个相似键的键名链字符串的设计规则能够得到一个或多个简化键,不同的简化键对应不同的键名链。
3.根据权利要求1-2中任一项所述的方法,其特征在于:所述简化键支持多级键名链,所述多级键名链包括多个要素,多个要素之间通过分隔符相连,每个要素对应一级键名域。
4.根据权利要求3所述的方法,其特征在于:所述分隔符为点符号“.”或者逗号“,”;
所述模糊匹配符号为星型符号“*”或井字号“#”。
5.根据权利要求1所述的方法,其特征在于:所述打分模式至少包括第一打分模式和第二打分模式;
在所述第一打分模式下,根据键名域的级别,级别越高的键名域的得分越高;
在所述第二打分模式下,根据键名域的级别,级别越低的键名域得分越高。
6.一种根据权利要求1所述方法的配置加载装置,其特征在于包括结构:
信息采集单元,用于根据需要加载配置的目标应用程序,获取待配置参数的键名链信息;
匹配打分单元,用于解析前述待配置参数的键名链以得到所述键名链的各级键名域信息,根据前述各级键名域信息,使用预设的打分机对前述键名链进行打分,获取得分最高的配置作为前述键名链的匹配项;
参数值返回单元:用于根据前述匹配项,基于前述目标应用程序的配置文件中的键值对信息获取前述匹配项对应的值后,将所述值作为前述键名链对应的值;其中,所述目标应用程序的配置文件为进行了配置数据简化的配置文件,所述配置文件的基本构成区块为键值对,所述键值对包括键和值,所述键值对的键为支持模糊匹配的键名链。
7.一种配置文件的配置简化方法,其特征在于,按照键值对的键和值对配置文件进行简化,包括步骤:
获取目标应用程序的原始配置文件;
对原始配置文件中的键值对进行分析,得到用于配置相近似属性的多个键值对,所述相近似属性通过键值对的相似键体现;
对于前述多个键值对,根据相似键的键名链规则对相似键进行归纳以得到支持模糊匹配的简化键;其中,根据多个相似键的键名链字符串的相似性,使用正则表达式来替换键名链字符串中符合一定规则的字符串内容后,得到支撑模糊匹配的简化键,所述简化键允许使用预设的模糊匹配符号和正则表达式,能够匹配前述多个相似键;
根据前述简化键,将前述多个键值对按照键值对的值进行整合后形成简化键值对;其中,将对应同一个值的多个键值对进行整合以形成一个简化键值对,所述简化键值对的键为前述简化键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310849069.0A CN116738252B (zh) | 2023-07-12 | 2023-07-12 | 基于模糊匹配的配置加载方法、装置及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310849069.0A CN116738252B (zh) | 2023-07-12 | 2023-07-12 | 基于模糊匹配的配置加载方法、装置及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116738252A CN116738252A (zh) | 2023-09-12 |
CN116738252B true CN116738252B (zh) | 2024-01-05 |
Family
ID=87916954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310849069.0A Active CN116738252B (zh) | 2023-07-12 | 2023-07-12 | 基于模糊匹配的配置加载方法、装置及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116738252B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388648A (zh) * | 2018-02-28 | 2018-08-10 | 郑州云海信息技术有限公司 | 配置文件存取方法、系统、设备及计算机可读存储介质 |
CN109684607A (zh) * | 2017-10-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Json数据解析方法、装置、计算机设备和存储介质 |
CN114489839A (zh) * | 2022-01-12 | 2022-05-13 | 海南车智易通信息技术有限公司 | 针对页面加载配置数据的方法及装置、服务器 |
CN115061874A (zh) * | 2022-06-14 | 2022-09-16 | 中国工商银行股份有限公司 | 日志信息验证方法、装置、设备及介质 |
CN115309954A (zh) * | 2022-08-30 | 2022-11-08 | 中信建投证券股份有限公司 | 一种数据检索方法、装置、设备以及存储介质 |
CN116055559A (zh) * | 2023-03-28 | 2023-05-02 | 广州九尾信息科技有限公司 | 数据交换格式的处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070260595A1 (en) * | 2006-05-02 | 2007-11-08 | Microsoft Corporation | Fuzzy string matching using tree data structure |
US7870151B2 (en) * | 2007-02-07 | 2011-01-11 | Fair Issac Corporation | Fast accurate fuzzy matching |
CN102298582B (zh) * | 2010-06-23 | 2016-09-21 | 商业对象软件有限公司 | 数据搜索和匹配方法和系统 |
US11294943B2 (en) * | 2017-12-08 | 2022-04-05 | International Business Machines Corporation | Distributed match and association of entity key-value attribute pairs |
US11360990B2 (en) * | 2019-06-21 | 2022-06-14 | Salesforce.Com, Inc. | Method and a system for fuzzy matching of entities in a database system based on machine learning |
-
2023
- 2023-07-12 CN CN202310849069.0A patent/CN116738252B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684607A (zh) * | 2017-10-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Json数据解析方法、装置、计算机设备和存储介质 |
CN108388648A (zh) * | 2018-02-28 | 2018-08-10 | 郑州云海信息技术有限公司 | 配置文件存取方法、系统、设备及计算机可读存储介质 |
CN114489839A (zh) * | 2022-01-12 | 2022-05-13 | 海南车智易通信息技术有限公司 | 针对页面加载配置数据的方法及装置、服务器 |
CN115061874A (zh) * | 2022-06-14 | 2022-09-16 | 中国工商银行股份有限公司 | 日志信息验证方法、装置、设备及介质 |
CN115309954A (zh) * | 2022-08-30 | 2022-11-08 | 中信建投证券股份有限公司 | 一种数据检索方法、装置、设备以及存储介质 |
CN116055559A (zh) * | 2023-03-28 | 2023-05-02 | 广州九尾信息科技有限公司 | 数据交换格式的处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
不确定性键值对数据模型及改进Top-k查询算法;易俗;吴亚坤;付天宇;张一川;;小型微型计算机系统(12);全文 * |
基于HTTP代理的模糊测试技术研究;孙歆;姚一杨;卢新岱;刘雪娇;吴永涵;;网络与信息安全学报(02);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116738252A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7493305B2 (en) | Efficient queribility and manageability of an XML index with path subsetting | |
US7171404B2 (en) | Parent-child query indexing for XML databases | |
US8768931B2 (en) | Representing and manipulating RDF data in a relational database management system | |
US7263525B2 (en) | Query processing method for searching XML data | |
US9189509B1 (en) | Storing graph data representing workflow management | |
US8788509B2 (en) | Method and device for coding a hierarchized document | |
KR100638695B1 (ko) | 구조화 문서의 데이터를 검색하는 장치 및 방법 | |
US7822788B2 (en) | Method, apparatus, and computer program product for searching structured document | |
US8190632B2 (en) | Computer product, information retrieving apparatus, and information retrieving method | |
JP2010541079A5 (zh) | ||
JP4247135B2 (ja) | 構造化文書記憶方法、構造化文書記憶装置、構造化文書検索方法 | |
Roijackers et al. | Bridging sql and nosql | |
CN106484815B (zh) | 一种基于海量数据类sql检索场景的自动识别优化方法 | |
O'Connor et al. | Desirable properties for XML update mechanisms | |
CN116738252B (zh) | 基于模糊匹配的配置加载方法、装置及应用 | |
AU2005234002A1 (en) | Index for accessing XML data | |
Jannidis et al. | A gentle introduction to data modeling | |
RU2605387C2 (ru) | Способ и система для хранения данных графов | |
JP2008243075A (ja) | 構造化文書管理装置及び方法 | |
CN117290523B (zh) | 基于动态索引表的全文检索方法及装置 | |
Mlýnková | Similarity of XML schema definitions | |
Waworuntu et al. | XSLTGen: A system for automatically generating XML transformations via semantic mappings | |
CN117235291A (zh) | 基于静态索引表的全文检索方法及装置 | |
Groß-Hardt | Concept based querying of semistructured data | |
CN117891885A (zh) | 一种基于关系型数据库的结构化数据查询方法及系统 |
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 |