CN101876989A - 一种对海量含通配符黑名单高速匹配的方法 - Google Patents
一种对海量含通配符黑名单高速匹配的方法 Download PDFInfo
- Publication number
- CN101876989A CN101876989A CN2009102323340A CN200910232334A CN101876989A CN 101876989 A CN101876989 A CN 101876989A CN 2009102323340 A CN2009102323340 A CN 2009102323340A CN 200910232334 A CN200910232334 A CN 200910232334A CN 101876989 A CN101876989 A CN 101876989A
- Authority
- CN
- China
- Prior art keywords
- character
- blacklist
- asterisk wildcard
- recursive iteration
- magnanimity
- 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.)
- Pending
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种对海量含通配符黑名单高速匹配的方法,用快速排序法对海量含通配符的黑名单进行排序,形成有序数组;然后对输入的比对字符串,根据第一个字符,采用两次二分查找法比对黑名单第一个字符确定一个子有序数组;当所述子有序数组为空、为一个或多个相同黑名单时,返回匹配结果,否则分两条线向后递归迭代:一是将当前字符替换为通配符向后递归迭代,另一是保留原字符向后递归迭代;直至返回匹配结果或输入字符串所有字符递归迭代完成。本发明适用于交通监控等监控对象无法100%识别或黑名单无法精确设定的领域,提供一种高速实时匹配。
Description
技术领域
本发明涉及一种字符串高速匹配方法,特别是一种对含通配符的海量黑名单的高速匹配的方法。
背景技术
通配符(wildcard)是一类键盘字符,包括星号(*)、问号(?)和百分号(%)等,当进行文件或字符内容匹配时不知道真正字符或者不想键入完整单词时,可以使用它来代替真正字符或完整的单词。通配符其特征是以一个指定符号或词组匹配零个、一个或多个字符(可以为指定范围的字符)。
含有通配符的格式化字符串(本文称为黑名单)常用于检索文件名、标题、简介、文章等字符串(本文称为目标字符串)比对操作,一般是通过黑名单与目标字符串逐个比对的方式进行。这在黑名单数量比较少时(比如文件检索通常只有一个格式化字符串)或对实时性要求不高的情况下没有什么问题。但当黑名单数量较大时就会出现运算不过来的情况,实际试验当超过100个黑名单时对一个目标字符串的匹配就会出现明显的迟滞,无法满足某些要求实时匹配的情况。
在实际工作中我们开发了一个机动车缉查布控系统,其中有个比对报警程序,功能是每过一辆车,就将车辆号牌与数据库中的机动车黑名单进行匹配,实时得到是否布控车辆(在黑名单中)的结果。因为对车辆号牌识别准确性问题(如车牌中‘8’、‘0’容易混淆)和其他业务需要的原因,含有通配符的黑名单数量极大(超过10万条),逐个匹配的方式是完全无法胜任的。
对于不含通配符的黑名单,我们采取的算法是对黑名单以快速排序法进行排序,而后通过二分查找法同过车车牌进行高速匹配,在普通PC机上实测表明对超过100万条黑名单匹配时间在1毫秒左右。由此,我们考虑通过加强这种算法来支持含通配符的黑名单匹配。
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种对海量含通配符黑名单高速匹配的方法,比传统方法的匹配效率有极大提高。
按照本发明提供的技术方案,所述对海量含通配符黑名单高速匹配的方法,用快速排序法对海量含通配符的黑名单进行排序,形成有序数组;然后对输入的比对字符串,根据第一个字符,采用两次二分查找法比对黑名单第一个字符确定一个子有序数组;当所述子有序数组为空、为一个或多个相同黑名单时,返回匹配结果,否则分两条线向后递归迭代:一是将当前字符替换为通配符向后递归迭代,另一是保留原字符向后递归迭代;直至返回匹配结果或输入字符串所有字符递归迭代完成。
所述通配符是以一个指定符号或词组匹配零个、一个或多个字符。
所述通配符包括“*””和“?”,“*”可以匹配任何字符序列,包括无字符的情况;“?”可以匹配任何单个字符。
所述快速排序法采用通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后分别对两部分数据递归的进行快速排序,最后达到整个数据变成有序序列。
本发明的优点是:不仅减少了迭代次数,而且每次迭代的黑名单规模也显著下降,大大提高了整个匹配效率。
具体实施方式
本发明的执行系统包括:输入模块,用于从数据库、文件等读入黑名单选择含通配符的黑名单输入系统;海量黑名单快速排序模块,用于对输入的黑名单快速排序形成有序数组;快速查找模块,用于确定一个子有序数组;通配符递归迭代模块,用于通过递归迭代匹配输入字符串,在递归迭代过程中通过快速查找模块减少有序数组规模,从而提高匹配速度。
本发明用快速排序法对海量含通配符的黑名单进行排序,形成有序数组。然后对输入的比对字符串,根据第一个字符,采用两次二分查找法比对黑名单左起第一个字符和输入字符串左起第一个字符以确定一个子有序数组。
如黑名单为
...“A11?65”、“B1?123”、“B11?23”、“C2?123”...
按递增排序,输入字符串为“B12345”,第一次查找第一个字符小于“B”的最大黑名单即“A11?65”,第二次则查找第一个字符大于“B”的最小黑名单即“C2?123”,两次查找即确定了黑名单中第一个字符为“B”的子数组,且该数组保持了有序状态(递增),避免了再次排序的时间消耗。
当两次二分查找能得到一个唯一的匹配结果时,即该子有序数组为空、为一个或多个相同黑名单,返回比对结果,否则分两条线向右递归迭代,一是将该字符替换为通配符,再次采用两次二分查找法进行比对,唯一匹配则返回结果,不唯一匹配则向右递归迭代,另一是保留原字符直接向后递归迭代,直至匹配或输入字符串所有字符递归迭代比对完成。第n次迭代比对过程只比对黑名单左起n个字符,通过逐步增加比对特征,逐步减少黑名单规模,高速接近比对结果。最坏情况下迭代次数与前述方法差不多也有等于126次,但因为每次黑名单规模高速减少,即使是最坏情况比对消耗时间远小于前述方法,且经实验测试,因黑名单设置的规律性和有限性(即便达到百万条黑名单,占可能的组合比仍然不过百万分之一),一个通配符多数情况下迭代次数8次以下即可比对命中或排除,极大地提高了黑名单匹配效率。多通配符下,迭代次数也仅在(n+1)的3次方(n为通配符数),比如有3个通配符时,为64次,比原方法在一个通配符下迭代次数还少,更不用说因为每次迭代黑名单规模减少而提高的效率。
所述的快二分查找法充分利用了元素间的次序关系,采用分治策略,算法复杂度是O(log n),即在最坏的情况下用O(log n)次比较完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。采用其他快速查找方法也可行。
综上,本方法对含通配符的黑名单匹配,即使是理论上最坏的情况,也比传统方法的效率有极大提高。在实际应用环境中,因为黑名单的规律性和有限性,比对效率则更高,在百万条黑名单条件下,含通配符比对与不含通配符黑名单比对效率在一个数量级内(即毫秒级内)。
Claims (4)
1.一种对海量含通配符黑名单高速匹配的方法,其特征是:用快速排序法对海量含通配符的黑名单进行排序,形成有序数组;然后对输入的比对字符串,根据第一个字符,采用两次二分查找法比对黑名单第一个字符确定一个子有序数组;当所述子有序数组为空、为一个或多个相同黑名单时,返回匹配结果,否则分两条线向后递归迭代:一是将当前字符替换为通配符向后递归迭代,另一是保留原字符向后递归迭代;直至返回匹配结果或输入字符串所有字符递归迭代完成。
2.如权利要求1所述对海量含通配符黑名单高速匹配的方法,其特征是所述通配符是以一个指定符号或词组匹配零个、一个或多个字符。
3.如权利要求1、2所述对海量含通配符黑名单高速匹配的方法,其特征是所述通配符包括“*”和“?”,“*”可以匹配任何字符序列,包括无字符的情况;“?”可以匹配任何单个字符。
4.如权利要求1所述对海量含通配符黑名单高速匹配的方法,其特征是所述快速排序法采用通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据小,然后分别对两部分数据递归的进行快速排序,最后达到整个数据变成有序序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102323340A CN101876989A (zh) | 2009-12-07 | 2009-12-07 | 一种对海量含通配符黑名单高速匹配的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102323340A CN101876989A (zh) | 2009-12-07 | 2009-12-07 | 一种对海量含通配符黑名单高速匹配的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101876989A true CN101876989A (zh) | 2010-11-03 |
Family
ID=43019547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102323340A Pending CN101876989A (zh) | 2009-12-07 | 2009-12-07 | 一种对海量含通配符黑名单高速匹配的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101876989A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104700459A (zh) * | 2015-03-20 | 2015-06-10 | 东南大学 | 一种提高afc系统终端设备黑名单匹配效率的方法 |
CN105589973A (zh) * | 2016-01-17 | 2016-05-18 | 浙江维融电子科技股份有限公司 | 一种高效黑名单搜索方法 |
CN106802966A (zh) * | 2015-11-26 | 2017-06-06 | 北京华大九天软件有限公司 | 一种批量替换单元名的方法 |
CN115589590A (zh) * | 2022-10-27 | 2023-01-10 | 上海创蓝云智信息科技股份有限公司 | 高效过滤短信黑名单的系统、方法、电子设备及存储介质 |
-
2009
- 2009-12-07 CN CN2009102323340A patent/CN101876989A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104700459A (zh) * | 2015-03-20 | 2015-06-10 | 东南大学 | 一种提高afc系统终端设备黑名单匹配效率的方法 |
CN104700459B (zh) * | 2015-03-20 | 2016-03-23 | 东南大学 | 一种提高afc系统终端设备黑名单匹配效率的方法 |
CN106802966A (zh) * | 2015-11-26 | 2017-06-06 | 北京华大九天软件有限公司 | 一种批量替换单元名的方法 |
CN105589973A (zh) * | 2016-01-17 | 2016-05-18 | 浙江维融电子科技股份有限公司 | 一种高效黑名单搜索方法 |
CN115589590A (zh) * | 2022-10-27 | 2023-01-10 | 上海创蓝云智信息科技股份有限公司 | 高效过滤短信黑名单的系统、方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tao et al. | Mining distance-based outliers from large databases in any metric space | |
AU2005264153B2 (en) | A method for determining near duplicate data objects | |
CN101625680B (zh) | 面向专利领域的文档检索方法 | |
Srinivas et al. | Clustering and classification of software component for efficient component retrieval and building component reuse libraries | |
CN114399250B (zh) | 基于认知图谱的冷链多温混配选温方法及装置 | |
CN101976253A (zh) | 一种中文变异文本匹配识别方法 | |
CN101876989A (zh) | 一种对海量含通配符黑名单高速匹配的方法 | |
CN105389480A (zh) | 多类不平衡基因组学数据迭代集成特征选择方法及系统 | |
CN102012915A (zh) | 一种文档共享平台的关键词推荐方法及系统 | |
CN105302869A (zh) | 一种HBase二级索引查询和存储系统及其查询方法 | |
CN101441663B (zh) | 一种基于lzw压缩算法的中文文本分类特征词典生成方法 | |
CN102955812A (zh) | 一种构建索引库的方法、装置及查询方法和装置 | |
CN111198820A (zh) | 一种基于共享隐层自编码器的跨项目软件缺陷预测方法 | |
CN102262682A (zh) | 基于粗糙分类知识发现的快速属性约简方法 | |
CN103577555A (zh) | 一种基于车联网的大数据分析方法 | |
Zhao et al. | Establishing the phylogeny of Prochlorococcus with a new alignment‐free method | |
CN111681704B (zh) | 一种基于matK基因的未知植物物种识别数据库的构建方法及数据库 | |
CN110727784B (zh) | 基于内容的文章推荐方法及系统 | |
Yong et al. | A new minority kind of sample sampling method based on genetic algorithm and K-means cluster | |
Wang et al. | A Second-Order HMM Trajectory Prediction Method based on the Spark Platform. | |
Kashef et al. | MLIFT: enhancing multi-label classifier with ensemble feature selection | |
CN110598760B (zh) | 一种变压器振动数据无监督特征选择方法 | |
CN101699428B (zh) | 基于特征值比对的内容分析方法 | |
CN111753084A (zh) | 一种短文本特征提取与分类方法 | |
CN101127052A (zh) | 一种有序链表节点的快速搜索方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20101103 |